",
- "kochava_device_id": "00000000000000000000000000",
- "data": {
- "app_tracking_transparency": {
- "att": false
- },
- "usertime": 1571043797562,
- "app_version": "1.0.0",
- "device_ver": "",
- "device_ids": {
- "idfa": "",
- "idfv": "",
- "adid": "",
- "android_id": "00000000000000000000000000"
- },
- "device_ua": "",
- "event_name": "screen view",
- "origination_ip": "1.1.1.1",
- "currency": "USD",
- "event_data": {},
- "app_name": "RudderLabs JavaScript SDK",
- "app_short_string": "1.0.0",
- "locale": "en-US",
- "os_version": "",
- "screen_dpi": 2
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- }
-]
diff --git a/test/__tests__/data/kustomer_input.json b/test/__tests__/data/kustomer_input.json
deleted file mode 100644
index c711c2499c8..00000000000
--- a/test/__tests__/data/kustomer_input.json
+++ /dev/null
@@ -1,851 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "Testc",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "name": "Test Rudderlabs",
- "email": "test@rudderstack.com",
- "phone": "+12345578900",
- "birthday": "2005-01-01T23:28:56.782Z",
- "userId": "Testc",
- "address": {
- "street": "24 Dovers Lane",
- "city": "Miami",
- "state": "Florida",
- "postalCode": "1890001"
- },
- "userName": "Testc47",
- "company": "Rudderstack",
- "createdAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatar": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "website": "www.mattertoast873.com",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ]
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "userId": "58210c3db0f09110006b7953",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "name": "Ano Domeni",
- "phone": "+12345578000",
- "birthday": "2005-01-01T23:28:56.782Z"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "screen",
- "event": "Test-Event-Screen",
- "sentAt": "2021-01-25T16:12:02.048Z",
- "userId": "Testc",
- "channel": "mobile",
- "context": {
- "os": {
- "name": "Android",
- "version": "10"
- },
- "app": {
- "name": "KlaviyoTest",
- "build": "1",
- "version": "1.0",
- "namespace": "com.rudderstack.android.rudderstack.sampleAndroidApp"
- },
- "device": {
- "id": "9c6bd77ea9da3e68",
- "name": "raphaelin",
- "type": "android",
- "model": "Redmi K20 Pro",
- "manufacturer": "Xiaomi"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1080,
- "height": 2210,
- "density": 440
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.2"
- },
- "network": {
- "wifi": true,
- "carrier": "airtel",
- "cellular": true,
- "bluetooth": false
- },
- "timezone": "Asia/Kolkata",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)"
- },
- "rudderId": "b7b24f86-f7bf-46d8-b2b4-ccafc080239c",
- "messageId": "1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce",
- "properties": {
- "hasAccount": "true",
- "YearSelectedNum": 1801,
- "originalServing": "2021-01-25T15:32:56.409Z"
- },
- "anonymousId": "9c6bd77ea9da3e68",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-01-25T15:32:56.409Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "name": "Cart-Viewed",
- "type": "page",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "traits": {
- "userId": "userid",
- "profession": "Student",
- "anonymousId": "d80b66d5-b33d-412d-866f-r4fft5841af"
- },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "category": "Cart",
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "url": "http://morkey.in",
- "name": "Cart Viewed",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "page",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "traits": {
- "userId": "userid",
- "profession": "Student",
- "anonymousId": "d80b66d5-b33d-412d-866f-r4fft5841af"
- },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "category": "Cart",
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com",
- "kustomerTrackingId": "829131sjad",
- "kustomerSessionId": "hsad522"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "track",
- "event": "Tracking-Weekender",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "YearServicedNum": 211,
- "region": "strapis",
- "kustomerTrackingId": "sahetwiac",
- "kustomerSessionId": "63nsa22"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "locale": "en-US",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "track",
- "event": "Tracking-Weekender2",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "YearServicedNum": 211,
- "reg_8-821x": false,
- "kustomer_tracking_id": "sahetwiac",
- "kustomer_session_id": "63nsa22"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "locale": "en-US",
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericPage": true
- }
- },
- "message": {
- "type": "page",
- "name": "Unfinished page",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "locale": "en-US",
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericScreen": true
- }
- },
- "message": {
- "type": "screen",
- "event": "Test-Event-Screen",
- "sentAt": "2021-01-25T16:12:02.048Z",
- "userId": "Testc",
- "channel": "mobile",
- "context": {
- "os": {
- "name": "Android",
- "version": "10"
- },
- "app": {
- "name": "KlaviyoTest",
- "build": "1",
- "version": "1.0",
- "namespace": "com.rudderstack.android.rudderstack.sampleAndroidApp"
- },
- "device": {
- "id": "9c6bd77ea9da3e68",
- "name": "raphaelin",
- "type": "android",
- "model": "Redmi K20 Pro",
- "manufacturer": "Xiaomi"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1080,
- "height": 2210,
- "density": 440
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.2"
- },
- "network": {
- "wifi": true,
- "carrier": "airtel",
- "cellular": true,
- "bluetooth": false
- },
- "timezone": "Asia/Kolkata",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)"
- },
- "rudderId": "b7b24f86-f7bf-46d8-b2b4-ccafc080239c",
- "messageId": "1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce",
- "properties": {
- "hasAccount": "true",
- "YearSelectedNum": 1801,
- "originalServing": "2021-01-25T15:32:56.409Z"
- },
- "anonymousId": "9c6bd77ea9da3e68",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-01-25T15:32:56.409Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "Testc",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "email": "test@rudderstack.com",
- "phone": "+12345578900",
- "birthday": "2005-01-01T23:28:56.782Z",
- "userId": "Testc",
- "address": {
- "street": "24 Dovers Lane",
- "city": "Miami",
- "state": "Florida",
- "postalCode": "1890001"
- },
- "userName": "Testc47",
- "company": "Rudderstack",
- "createdAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatar": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "website": "www.mattertoast873.com",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ]
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "Testc",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "birthday": "2005-01-01T23:28:56.782Z",
- "userId": "Testc",
- "address": "test address string",
- "userName": "Testc47",
- "company": "Rudderstack",
- "createdAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatar": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "website": "www.mattertoast873.com",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ]
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "Testc",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "birthday": "2005-01-01T23:28:56.782Z",
- "userId": "Testc",
- "address": "test address string",
- "userName": "Testc47",
- "company": "Rudderstack",
- "createdAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatar": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "website": "www.mattertoast873.com",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ]
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0",
- "externalId": [
- {
- "type": "kustomerId",
- "id": "abcd1234"
- }
- ]
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericScreen": true
- }
- },
- "message": {
- "type": "screen",
- "event": "Test-Event-Screen",
- "userId": "utsabc",
- "channel": "mobile",
- "context": {
- "os": {
- "name": "Android",
- "version": "10"
- },
- "app": {
- "name": "KlaviyoTest",
- "build": "1",
- "version": "1.0",
- "namespace": "com.rudderstack.android.rudderstack.sampleAndroidApp"
- },
- "device": {
- "id": "9c6bd77ea9da3e68",
- "name": "raphaelin",
- "type": "android",
- "model": "Redmi K20 Pro",
- "manufacturer": "Xiaomi"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1080,
- "height": 2210,
- "density": 440
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.2"
- },
- "network": {
- "wifi": true,
- "carrier": "airtel",
- "cellular": true,
- "bluetooth": false
- },
- "timezone": "Asia/Kolkata",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)",
- "sessionId": "hsad522"
- },
- "rudderId": "b7b24f86-f7bf-46d8-b2b4-ccafc080239c",
- "messageId": "1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce",
- "properties": {
- "hasAccount": "true",
- "YearSelectedNum": 1801
- },
- "anonymousId": "9c6bd77ea9da3e68",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2023-01-10T15:32:56.409Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyAPIkey",
- "baseEndpoint": "https://api.prod2.kustomerapp.com",
- "apiKey": "dummyApiKey",
- "genericScreen": true
- }
- },
- "message": {
- "type": "screen",
- "event": "Test-Event-Screen",
- "userId": "Testc",
- "channel": "mobile",
- "context": {
- "os": {
- "name": "Android",
- "version": "10"
- },
- "app": {
- "name": "KlaviyoTest",
- "build": "1",
- "version": "1.0",
- "namespace": "com.rudderstack.android.rudderstack.sampleAndroidApp"
- },
- "device": {
- "id": "9c6bd77ea9da3e68",
- "name": "raphaelin",
- "type": "android",
- "model": "Redmi K20 Pro",
- "manufacturer": "Xiaomi"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1080,
- "height": 2210,
- "density": 440
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.2"
- },
- "network": {
- "wifi": true,
- "carrier": "airtel",
- "cellular": true,
- "bluetooth": false
- },
- "timezone": "Asia/Kolkata",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)",
- "sessionId": "hsad522"
- },
- "rudderId": "b7b24f86-f7bf-46d8-b2b4-ccafc080239c",
- "messageId": "1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce",
- "properties": {
- "hasAccount": "true",
- "YearSelectedNum": 1801
- },
- "anonymousId": "9c6bd77ea9da3e68",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2023-01-10T15:32:56.409Z"
- }
- }
-]
diff --git a/test/__tests__/data/kustomer_output.json b/test/__tests__/data/kustomer_output.json
deleted file mode 100644
index 0a0876d29af..00000000000
--- a/test/__tests__/data/kustomer_output.json
+++ /dev/null
@@ -1,602 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/customers",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "Test Rudderlabs",
- "externalId": "Testc",
- "username": "Testc47",
- "company": "Rudderstack",
- "signedUpAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatarUrl": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "locale": "en-US",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ],
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "urls": [
- {
- "url": "www.mattertoast873.com"
- }
- ],
- "locations": [
- {
- "type": "home",
- "address": "24 Dovers Lane Miami Florida 1890001"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.kustomerapp.com/v1/customers/58210c3db0f09110006b7953?replace=false",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "Ano Domeni",
- "externalId": "58210c3db0f09110006b7953",
- "locale": "en-US",
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "phones": [
- {
- "type": "home",
- "phone": "+12345578000"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "Testc"
- },
- "event": {
- "name": "Screen-Viewed-Test-Event-Screen",
- "meta": {
- "hasAccount": "true",
- "YearSelectedNum": 1801,
- "originalServing": "2021-01-25T15:32:56.409Z"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Web-Page-Viewed-Cart-Viewed",
- "meta": {
- "url": "http://morkey.in",
- "name": "Cart Viewed",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Web-Page-Viewed",
- "sessionId": "hsad522",
- "trackingId": "829131sjad",
- "meta": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Tracking-Weekender",
- "sessionId": "63nsa22",
- "trackingId": "sahetwiac",
- "meta": {
- "YearServicedNum": 211,
- "region": "strapis"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "FORM": {},
- "JSON": {
- "event": {
- "meta": {
- "YearServicedNum": 211,
- "reg_8-821x": false
- },
- "name": "Tracking-Weekender2",
- "sessionId": "63nsa22",
- "trackingId": "sahetwiac"
- },
- "identity": {
- "externalId": "user@doe"
- }
- },
- "XML": {},
- "JSON_ARRAY": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Web-Page-Viewed",
- "meta": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "category": "Cart",
- "referrer": "morkey",
- "domain": "morkey.com"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "Testc"
- },
- "event": {
- "name": "Screen-Viewed",
- "meta": {
- "hasAccount": "true",
- "YearSelectedNum": 1801,
- "originalServing": "2021-01-25T15:32:56.409Z"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/customers",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "Test Rudderlabs",
- "externalId": "Testc",
- "username": "Testc47",
- "company": "Rudderstack",
- "signedUpAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatarUrl": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "locale": "en-US",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ],
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "urls": [
- {
- "url": "www.mattertoast873.com"
- }
- ],
- "locations": [
- {
- "type": "home",
- "address": "24 Dovers Lane Miami Florida 1890001"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/customers",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "Test Rudderlabs",
- "externalId": "Testc",
- "username": "Testc47",
- "company": "Rudderstack",
- "signedUpAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatarUrl": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "locale": "en-US",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ],
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "urls": [
- {
- "url": "www.mattertoast873.com"
- }
- ],
- "locations": [
- {
- "type": "home",
- "address": "test address string"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.kustomerapp.com/v1/customers/abcd1234?replace=false",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "Test Rudderlabs",
- "externalId": "Testc",
- "username": "Testc47",
- "company": "Rudderstack",
- "signedUpAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatarUrl": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "locale": "en-US",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@Testc",
- "url": "http://twitter.com/Testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "Testc",
- "url": "http://facebook.com/Testc"
- }
- ],
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "urls": [
- {
- "url": "www.mattertoast873.com"
- }
- ],
- "locations": [
- {
- "type": "home",
- "address": "test address string"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "utsabc"
- },
- "event": {
- "name": "Screen-Viewed",
- "sessionId": "hsad522",
- "meta": {
- "hasAccount": "true",
- "YearSelectedNum": 1801
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.prod2.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "Testc"
- },
- "event": {
- "name": "Screen-Viewed",
- "sessionId": "hsad522",
- "meta": {
- "hasAccount": "true",
- "YearSelectedNum": 1801
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/kustomer_router_input.json b/test/__tests__/data/kustomer_router_input.json
deleted file mode 100644
index 0e4c88aa20c..00000000000
--- a/test/__tests__/data/kustomer_router_input.json
+++ /dev/null
@@ -1,183 +0,0 @@
-[
- {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "testc",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "name": "test Rudderlabs",
- "email": "test@rudderstack.com",
- "phone": "+12345578900",
- "birthday": "2005-01-01T23:28:56.782Z",
- "userId": "testc",
- "address": {
- "street": "24 Dovers Lane",
- "city": "Miami",
- "state": "Florida",
- "postalCode": "1890001"
- },
- "userName": "testc47",
- "company": "Rudderstack",
- "createdAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatar": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "website": "www.mattertoast873.com",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@testc",
- "url": "http://twitter.com/testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "testc",
- "url": "http://facebook.com/testc"
- }
- ]
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Tracking-Weekender",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "YearServicedNum": 211,
- "region": "strapis",
- "kustomerTrackingId": "sahetwiac",
- "kustomerSessionId": "63nsa22"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "locale": "en-US",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Tracking-Weekender",
- "sentAt": "2021-01-03T17:02:53.197Z",
- "userId": "user@doe",
- "channel": "web",
- "context": {
- "os": { "name": "", "version": "" },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://morkey.in",
- "path": "/cart",
- "title": "miphone",
- "search": "MI",
- "referrer": "morkey"
- },
- "locale": "en-US",
- "screen": { "density": 2 },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.1.11" },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "15129730-eb00-4db7-8db2-799566ccb2ef",
- "properties": {
- "YearServicedNum": 211,
- "region": "strapis",
- "kustomerTrackingId": "sahetwiac",
- "kustomerSessionId": "63nsa22"
- },
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "locale": "en-US",
- "integrations": { "All": true },
- "originalTimestamp": "2021-01-03T17:02:53.195Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "baseEndpoint": "https://api.prod2.kustomerapp.com",
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- }
-]
diff --git a/test/__tests__/data/kustomer_router_output.json b/test/__tests__/data/kustomer_router_output.json
deleted file mode 100644
index 0d3470f74a9..00000000000
--- a/test/__tests__/data/kustomer_router_output.json
+++ /dev/null
@@ -1,184 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/customers",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "test Rudderlabs",
- "externalId": "testc",
- "username": "testc47",
- "company": "Rudderstack",
- "signedUpAt": "2015-04-17T12:37:42.146Z",
- "lastActivityAt": "2016-04-17T12:37:42.146Z",
- "lastCustomerActivityAt": "2017-04-17T12:37:42.146Z",
- "lastSeenAt": "2017-04-17T12:37:42.146Z",
- "avatarUrl": "https://homepages.cae.wisc.edu/~ece533/images/boat.png",
- "gender": "m",
- "tags": ["happy", "satisfied"],
- "locale": "en-US",
- "socials": [
- {
- "verified": true,
- "userid": "100",
- "type": "twitter",
- "username": "@testc",
- "url": "http://twitter.com/testc"
- },
- {
- "verified": false,
- "userid": "200",
- "type": "facebook",
- "username": "testc",
- "url": "http://facebook.com/testc"
- }
- ],
- "birthdayAt": "2005-01-01T23:28:56.782Z",
- "emails": [
- {
- "type": "home",
- "email": "test@rudderstack.com"
- }
- ],
- "phones": [
- {
- "type": "home",
- "phone": "+12345578900"
- }
- ],
- "urls": [
- {
- "url": "www.mattertoast873.com"
- }
- ],
- "locations": [
- {
- "type": "home",
- "address": "24 Dovers Lane Miami Florida 1890001"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Tracking-Weekender",
- "sessionId": "63nsa22",
- "trackingId": "sahetwiac",
- "meta": {
- "YearServicedNum": 211,
- "region": "strapis"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.prod2.kustomerapp.com/v1/tracking/identityEvent",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "externalId": "user@doe"
- },
- "event": {
- "name": "Tracking-Weekender",
- "sessionId": "63nsa22",
- "trackingId": "sahetwiac",
- "meta": {
- "YearServicedNum": 211,
- "region": "strapis"
- }
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "baseEndpoint": "https://api.prod2.kustomerapp.com",
- "apiKey": "dummyApiKey",
- "genericPage": false,
- "genericScreen": false
- }
- }
- }
-]
diff --git a/test/__tests__/data/lambda.json b/test/__tests__/data/lambda.json
deleted file mode 100644
index a0b19b5ce3c..00000000000
--- a/test/__tests__/data/lambda.json
+++ /dev/null
@@ -1,334 +0,0 @@
-[
- {
- "description": "Simple Identify call",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2022-08-03T10:44:55.382+05:30",
- "userId": "user113",
- "context": {
- "os": {
- "name": "android"
- },
- "device": {
- "name": "Mi",
- "token": "qwertyuioprtyuiop"
- },
- "traits": {
- "name": "User2",
- "email": "user112@mail.com"
- }
- },
- "rudderId": "ed33ef22-569d-44b1-a6cb-063c69dca8f0",
- "messageId": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "timestamp": "2022-08-03T10:44:54.942+05:30",
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-03T10:44:55.382+05:30"
- },
- "metadata": {
- "userId": "user113<<>>user113",
- "jobId": 10,
- "sourceId": "2CFEootdF2eQh0CGeD0jdVybP5A",
- "destinationId": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "attemptNum": 0,
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "createdAt": "2022-08-03T05:14:55.384Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7",
- "secret": null,
- "jobsT": {
- "UUID": "53927e88-2d5c-4274-ad72-2e1c14a96301",
- "JobID": 10,
- "UserID": "user113<<>>user113",
- "CreatedAt": "2022-08-03T05:14:55.384207Z",
- "ExpireAt": "2022-08-03T05:14:55.384207Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "identify",
- "sentAt": "2022-08-03T10:44:55.382+05:30",
- "userId": "user113",
- "context": {
- "os": {
- "name": "android"
- },
- "device": {
- "name": "Mi",
- "token": "qwertyuioprtyuiop"
- },
- "traits": {
- "name": "User2",
- "email": "user112@mail.com"
- }
- },
- "rudderId": "ed33ef22-569d-44b1-a6cb-063c69dca8f0",
- "messageId": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "timestamp": "2022-08-03T10:44:54.942+05:30",
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-03T10:44:55.382+05:30"
- },
- "PayloadSize": 550,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2CFEootdF2eQh0CGeD0jdVybP5A",
- "event_name": "",
- "event_type": "identify",
- "message_id": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "received_at": "2022-08-03T10:44:54.943+05:30",
- "workspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "gateway_job_id": 10,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2CCxgViQJACgWABA6h83wlXnE1k",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7"
- },
- "pickedAtTime": "2022-08-03T10:44:56.193361+05:30",
- "resultSetID": 10
- },
- "destination": {
- "ID": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2CoiaHPaRb79wpSG3wZWfrG3B0n",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "accessKeyId",
- "accessKey",
- "lambda",
- "invocationType",
- "enableBatchInput",
- "clientContext"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": false,
- "invocationType": "Event",
- "lambda": "testFunction",
- "region": "us-west-2",
- "accessKey": ""
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2CojwWiWjNghiGbfuRcwfs6Bt5q"
- }
- },
- "output": {
- "payload": "{\"type\":\"identify\",\"sentAt\":\"2022-08-03T10:44:55.382+05:30\",\"userId\":\"user113\",\"context\":{\"os\":{\"name\":\"android\"},\"device\":{\"name\":\"Mi\",\"token\":\"qwertyuioprtyuiop\"},\"traits\":{\"name\":\"User2\",\"email\":\"user112@mail.com\"}},\"rudderId\":\"ed33ef22-569d-44b1-a6cb-063c69dca8f0\",\"messageId\":\"29beef33-2771-45fd-adb4-4376aa6d72d9\",\"timestamp\":\"2022-08-03T10:44:54.942+05:30\",\"receivedAt\":\"2022-08-03T10:44:54.943+05:30\",\"request_ip\":\"[::1]\",\"originalTimestamp\":\"2022-08-03T10:44:55.382+05:30\"}",
- "destConfig": {
- "clientContext": "",
- "invocationType": "Event",
- "lambda": "testFunction"
- }
- }
- },
- {
- "description": "Destination config not present",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2022-08-03T10:44:55.382+05:30",
- "userId": "user113",
- "context": {
- "os": {
- "name": "android"
- },
- "device": {
- "name": "Mi",
- "token": "qwertyuioprtyuiop"
- },
- "traits": {
- "name": "User2",
- "email": "user112@mail.com"
- }
- },
- "rudderId": "ed33ef22-569d-44b1-a6cb-063c69dca8f0",
- "messageId": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "timestamp": "2022-08-03T10:44:54.942+05:30",
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-03T10:44:55.382+05:30"
- },
- "metadata": {
- "userId": "user113<<>>user113",
- "jobId": 10,
- "sourceId": "2CFEootdF2eQh0CGeD0jdVybP5A",
- "destinationId": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "attemptNum": 0,
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "createdAt": "2022-08-03T05:14:55.384Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7",
- "secret": null,
- "jobsT": {
- "UUID": "53927e88-2d5c-4274-ad72-2e1c14a96301",
- "JobID": 10,
- "UserID": "user113<<>>user113",
- "CreatedAt": "2022-08-03T05:14:55.384207Z",
- "ExpireAt": "2022-08-03T05:14:55.384207Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "identify",
- "sentAt": "2022-08-03T10:44:55.382+05:30",
- "userId": "user113",
- "context": {
- "os": {
- "name": "android"
- },
- "device": {
- "name": "Mi",
- "token": "qwertyuioprtyuiop"
- },
- "traits": {
- "name": "User2",
- "email": "user112@mail.com"
- }
- },
- "rudderId": "ed33ef22-569d-44b1-a6cb-063c69dca8f0",
- "messageId": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "timestamp": "2022-08-03T10:44:54.942+05:30",
- "receivedAt": "2022-08-03T10:44:54.943+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-03T10:44:55.382+05:30"
- },
- "PayloadSize": 550,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2CFEootdF2eQh0CGeD0jdVybP5A",
- "event_name": "",
- "event_type": "identify",
- "message_id": "29beef33-2771-45fd-adb4-4376aa6d72d9",
- "received_at": "2022-08-03T10:44:54.943+05:30",
- "workspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "gateway_job_id": 10,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2CCxgViQJACgWABA6h83wlXnE1k",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2ANaDOTAzxboCOF86FkRGMEJ5F7"
- },
- "pickedAtTime": "2022-08-03T10:44:56.193361+05:30",
- "resultSetID": 10
- },
- "destination": {
- "ID": "2CojwY2YqpiTqfBPrMAUN8orgHA",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2CoiaHPaRb79wpSG3wZWfrG3B0n",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "accessKeyId",
- "accessKey",
- "lambda",
- "invocationType",
- "enableBatchInput",
- "clientContext"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2CojwWiWjNghiGbfuRcwfs6Bt5q"
- }
- },
- "output": {
- "error": "destination.Config cannot be undefined"
- }
- }
-]
diff --git a/test/__tests__/data/lambda_router_input.json b/test/__tests__/data/lambda_router_input.json
deleted file mode 100644
index 1cf6a5324d1..00000000000
--- a/test/__tests__/data/lambda_router_input.json
+++ /dev/null
@@ -1,19396 +0,0 @@
-[
- {
- "message": {
- "type": "identify",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "data2": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "c864b4cd-8f07-4922-b3d0-82ef04c987d3",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 31,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "47b3937a-1fef-49fa-85c8-649673bd7170",
- "JobID": 31,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "identify",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "data2": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "c864b4cd-8f07-4922-b3d0-82ef04c987d3",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 95943,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "identify",
- "message_id": "c864b4cd-8f07-4922-b3d0-82ef04c987d3",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Product Purchased new",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "9f8fb785-c720-4381-a009-bf22a13f4ced",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "name": "Shirt",
- "revenue": 4.99
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 32,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "dc239cd1-bef4-4999-88e1-7332c64bf78c",
- "JobID": 32,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "track",
- "event": "Product Purchased new",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "9f8fb785-c720-4381-a009-bf22a13f4ced",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "name": "Shirt",
- "revenue": 4.99
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 48375,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "Product Purchased new",
- "event_type": "track",
- "message_id": "9f8fb785-c720-4381-a009-bf22a13f4ced",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- },
- {
- "message": {
- "name": "Page View",
- "type": "page",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "5f58d1f7-cbd6-4bff-8571-9933be7210b1",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "path": "/",
- "title": "Home"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 33,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "bf616af4-2c6b-495f-8b2d-b522c93bdca2",
- "JobID": 33,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "name": "Page View",
- "type": "page",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "5f58d1f7-cbd6-4bff-8571-9933be7210b1",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "path": "/",
- "title": "Home"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 548,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "page",
- "message_id": "5f58d1f7-cbd6-4bff-8571-9933be7210b1",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- },
- {
- "message": {
- "name": "Screen View",
- "type": "screen",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "1b8ee4c3-ffad-4457-b453-31b32da1dfea",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "prop1": "5"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 34,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "8faa9d6d-d8a8-468c-bef4-c2db52f6101b",
- "JobID": 34,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "name": "Screen View",
- "type": "screen",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "1b8ee4c3-ffad-4457-b453-31b32da1dfea",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "prop1": "5"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 536,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "screen",
- "message_id": "1b8ee4c3-ffad-4457-b453-31b32da1dfea",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- },
- {
- "message": {
- "type": "group",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "traits": {
- "name": "Company",
- "industry": "Industry",
- "employees": 123
- },
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "groupId": "group1",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "2c59b527-3235-4fc2-9680-f41ec52ebb51",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 35,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "73cea314-998a-4b72-8004-34b0618093a3",
- "JobID": 35,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "group",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "traits": {
- "name": "Company",
- "industry": "Industry",
- "employees": 123
- },
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "groupId": "group1",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "2c59b527-3235-4fc2-9680-f41ec52ebb51",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 589,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "group",
- "message_id": "2c59b527-3235-4fc2-9680-f41ec52ebb51",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- },
- {
- "message": {
- "type": "alias",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "previousId": "previd1",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "metadata": {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 36,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "ac80629c-9eb6-4e92-bee8-4647e88f7fc0",
- "JobID": 36,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "alias",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "previousId": "previd1",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 506,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "alias",
- "message_id": "3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- "destination": {
- "ID": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "Name": "Lambda test",
- "DestinationDefinition": {
- "ID": "2DTlHvPWOzBUksUQUvggRnalUkj",
- "Name": "LAMBDA",
- "DisplayName": "AWS Lambda",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "region",
- "iamRoleARN",
- "externalID",
- "accessKeyId",
- "accessKey",
- "lambda",
- "enableBatchInput",
- "clientContext",
- "roleBasedAuth",
- "maxBatchSize"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "accessKey", "iamRoleARN", "externalID"],
- "supportedMessageTypes": ["identify", "page", "screen", "track", "alias", "group"],
- "supportedSourceTypes": [
- "amp",
- "android",
- "cordova",
- "cloud",
- "flutter",
- "ios",
- "reactnative",
- "unity",
- "warehouse",
- "web"
- ],
- "transformAt": "router",
- "transformAtV1": "router"
- },
- "ResponseRules": {}
- },
- "Config": {
- "accessKey": "",
- "accessKeyId": "",
- "clientContext": "",
- "enableBatchInput": true,
- "externalID": "",
- "iamRoleARN": "",
- "lambda": "testFunction",
- "maxBatchSize": "2",
- "region": "us-west-2",
- "roleBasedAuth": false
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true,
- "RevisionID": "2DVji2YjKiWRL0Qdx73xg9r8ReQ"
- }
- }
-]
diff --git a/test/__tests__/data/lambda_router_output.json b/test/__tests__/data/lambda_router_output.json
deleted file mode 100644
index ccc142bc8cf..00000000000
--- a/test/__tests__/data/lambda_router_output.json
+++ /dev/null
@@ -1,9727 +0,0 @@
-[
- {
- "batchedRequest": {
- "payload": "[{\"type\":\"track\",\"event\":\"Product Purchased new\",\"sentAt\":\"2022-08-18T08:43:15.539+05:30\",\"userId\":\"identified user id\",\"context\":{\"ip\":\"14.5.67.21\",\"library\":{\"name\":\"http\"}},\"rudderId\":\"daf823fb-e8d3-413a-8313-d34cd756f968\",\"messageId\":\"9f8fb785-c720-4381-a009-bf22a13f4ced\",\"timestamp\":\"2020-02-02T00:23:09.544Z\",\"properties\":{\"data\":[{\"id\":6104546,\"url\":\"https://api.github.com/repos/mralexgray/-REPONAME\",\"fork\":false,\"name\":\"-REPONAME\",\"size\":48,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/-REPONAME.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk2MTA0NTQ2\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/-REPONAME.git\",\"svn_url\":\"https://github.com/mralexgray/-REPONAME\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/-REPONAME\",\"keys_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}\",\"language\":null,\"tags_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/-REPONAME.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/forks\",\"full_name\":\"mralexgray/-REPONAME\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}\",\"pushed_at\":\"2012-10-06T16:37:39Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}\",\"created_at\":\"2012-10-06T16:37:39Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/events\",\"has_issues\":true,\"issues_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-12T13:39:30Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}\",\"description\":null,\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":104510411,\"url\":\"https://api.github.com/repos/mralexgray/...\",\"fork\":true,\"name\":\"...\",\"size\":113,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/....git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/....git\",\"svn_url\":\"https://github.com/mralexgray/...\",\"archived\":false,\"disabled\":false,\"has_wiki\":false,\"homepage\":\"https://driesvints.com/blog/getting-started-with-dotfiles\",\"html_url\":\"https://github.com/mralexgray/...\",\"keys_url\":\"https://api.github.com/repos/mralexgray/.../keys{/key_id}\",\"language\":\"Shell\",\"tags_url\":\"https://api.github.com/repos/mralexgray/.../tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/.../git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/....git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/.../forks\",\"full_name\":\"mralexgray/...\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/.../hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/.../pulls{/number}\",\"pushed_at\":\"2017-09-15T08:27:32Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/.../teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/.../git/trees{/sha}\",\"created_at\":\"2017-09-22T19:19:42Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/.../events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/.../issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/.../labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/.../merges\",\"mirror_url\":null,\"updated_at\":\"2017-09-22T19:20:22Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/.../commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/.../compare/{base}...{head}\",\"description\":\":computer: Public repo for my personal dotfiles.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/.../branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/.../comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/.../contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/.../git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/.../git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/.../releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/.../statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/.../assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/.../downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/.../languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/.../milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/.../stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/.../deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/.../git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/.../subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/.../contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/.../issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/.../subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/.../issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":58656723,\"url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol\",\"fork\":true,\"name\":\"2200087-Serial-Protocol\",\"size\":41,\"forks\":1,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/2200087-Serial-Protocol.git\",\"license\":{\"key\":\"gpl-2.0\",\"url\":\"https://api.github.com/licenses/gpl-2.0\",\"name\":\"GNU General Public License v2.0\",\"node_id\":\"MDc6TGljZW5zZTg=\",\"spdx_id\":\"GPL-2.0\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/2200087-Serial-Protocol.git\",\"svn_url\":\"https://github.com/mralexgray/2200087-Serial-Protocol\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://daviddworken.com\",\"html_url\":\"https://github.com/mralexgray/2200087-Serial-Protocol\",\"keys_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}\",\"language\":\"Python\",\"tags_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/2200087-Serial-Protocol.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks\",\"full_name\":\"mralexgray/2200087-Serial-Protocol\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}\",\"pushed_at\":\"2016-05-12T16:07:24Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}\",\"created_at\":\"2016-05-12T16:05:28Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges\",\"mirror_url\":null,\"updated_at\":\"2016-05-12T16:05:30Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}\",\"description\":\"A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter\",\"forks_count\":1,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":13121042,\"url\":\"https://api.github.com/repos/mralexgray/ace\",\"fork\":true,\"name\":\"ace\",\"size\":21080,\"forks\":1,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/ace.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/ace.git\",\"svn_url\":\"https://github.com/mralexgray/ace\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://ace.c9.io\",\"html_url\":\"https://github.com/mralexgray/ace\",\"keys_url\":\"https://api.github.com/repos/mralexgray/ace/keys{/key_id}\",\"language\":\"JavaScript\",\"tags_url\":\"https://api.github.com/repos/mralexgray/ace/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/ace.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/ace/forks\",\"full_name\":\"mralexgray/ace\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/ace/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/ace/pulls{/number}\",\"pushed_at\":\"2013-10-26T12:34:48Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/ace/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/ace/git/trees{/sha}\",\"created_at\":\"2013-09-26T11:58:10Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/ace/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/ace/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/ace/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/ace/merges\",\"mirror_url\":null,\"updated_at\":\"2013-10-26T12:34:49Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/ace/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}\",\"description\":\"Ace (Ajax.org Cloud9 Editor)\",\"forks_count\":1,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/ace/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/ace/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/ace/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/ace/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/ace/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/ace/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/ace/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/ace/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/ace/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/ace/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/ace/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/ace/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/ace/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/ace/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/ace/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/ace/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/ace/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/ace/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/ace/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":10791045,\"url\":\"https://api.github.com/repos/mralexgray/ACEView\",\"fork\":true,\"name\":\"ACEView\",\"size\":1733,\"forks\":1,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/ACEView.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/ACEView.git\",\"svn_url\":\"https://github.com/mralexgray/ACEView\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/ACEView\",\"keys_url\":\"https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/ACEView/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/ACEView.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/ACEView/forks\",\"full_name\":\"mralexgray/ACEView\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/ACEView/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/ACEView/pulls{/number}\",\"pushed_at\":\"2014-05-09T01:36:23Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/ACEView/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}\",\"created_at\":\"2013-06-19T12:15:04Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/ACEView/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/ACEView/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/ACEView/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/ACEView/merges\",\"mirror_url\":null,\"updated_at\":\"2015-11-24T01:14:10Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/ACEView/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}\",\"description\":\"Use the wonderful ACE editor in your Cocoa applications\",\"forks_count\":1,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/ACEView/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/ACEView/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/ACEView/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/ACEView/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/ACEView/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/ACEView/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/ACEView/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/ACEView/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/ACEView/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/ACEView/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/ACEView/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/ACEView/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/ACEView/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":13623648,\"url\":\"https://api.github.com/repos/mralexgray/ActiveLog\",\"fork\":true,\"name\":\"ActiveLog\",\"size\":60,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/ActiveLog.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/ActiveLog.git\",\"svn_url\":\"https://github.com/mralexgray/ActiveLog\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://deepitpro.com/en/articles/ActiveLog/info/\",\"html_url\":\"https://github.com/mralexgray/ActiveLog\",\"keys_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/ActiveLog.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/forks\",\"full_name\":\"mralexgray/ActiveLog\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}\",\"pushed_at\":\"2011-07-03T06:28:59Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}\",\"created_at\":\"2013-10-16T15:52:37Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/merges\",\"mirror_url\":null,\"updated_at\":\"2013-10-16T15:52:37Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}\",\"description\":\"Shut up all logs with active filter.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":9716210,\"url\":\"https://api.github.com/repos/mralexgray/adium\",\"fork\":false,\"name\":\"adium\",\"size\":277719,\"forks\":37,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/adium.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnk5NzE2MjEw\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/adium.git\",\"svn_url\":\"https://github.com/mralexgray/adium\",\"archived\":false,\"disabled\":false,\"has_wiki\":false,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/adium\",\"keys_url\":\"https://api.github.com/repos/mralexgray/adium/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/adium/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/adium.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/adium/forks\",\"full_name\":\"mralexgray/adium\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/adium/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/adium/pulls{/number}\",\"pushed_at\":\"2013-04-26T16:43:53Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/adium/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/adium/git/trees{/sha}\",\"created_at\":\"2013-04-27T14:59:33Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/adium/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/adium/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/adium/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/adium/merges\",\"mirror_url\":null,\"updated_at\":\"2019-12-11T06:51:45Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/adium/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}\",\"description\":\"Official mirror of hg.adium.im\",\"forks_count\":37,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/adium/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/adium/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/adium/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/adium/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/adium/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/adium/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/adium/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/adium/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/adium/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/adium/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/adium/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/adium/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/adium/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/adium/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/adium/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/adium/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/adium/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/adium/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/adium/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":12752329,\"url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView\",\"fork\":true,\"name\":\"ADLivelyTableView\",\"size\":73,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/ADLivelyTableView.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/ADLivelyTableView.git\",\"svn_url\":\"https://github.com/mralexgray/ADLivelyTableView\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://applidium.com/en/news/lively_uitableview/\",\"html_url\":\"https://github.com/mralexgray/ADLivelyTableView\",\"keys_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/ADLivelyTableView.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/forks\",\"full_name\":\"mralexgray/ADLivelyTableView\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}\",\"pushed_at\":\"2012-05-10T10:40:15Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}\",\"created_at\":\"2013-09-11T09:18:01Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/merges\",\"mirror_url\":null,\"updated_at\":\"2013-09-11T09:18:03Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}\",\"description\":\"Lively UITableView\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":5697379,\"url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore\",\"fork\":true,\"name\":\"AFIncrementalStore\",\"size\":139,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AFIncrementalStore.git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnk1Njk3Mzc5\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AFIncrementalStore.git\",\"svn_url\":\"https://github.com/mralexgray/AFIncrementalStore\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/AFIncrementalStore\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AFIncrementalStore.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/forks\",\"full_name\":\"mralexgray/AFIncrementalStore\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}\",\"pushed_at\":\"2012-09-01T22:46:25Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}\",\"created_at\":\"2012-09-06T04:20:33Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-12T03:15:29Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}\",\"description\":\"Core Data Persistence with AFNetworking, Done Right\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":6969621,\"url\":\"https://api.github.com/repos/mralexgray/AFNetworking\",\"fork\":true,\"name\":\"AFNetworking\",\"size\":4341,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AFNetworking.git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnk2OTY5NjIx\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AFNetworking.git\",\"svn_url\":\"https://github.com/mralexgray/AFNetworking\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://afnetworking.com\",\"html_url\":\"https://github.com/mralexgray/AFNetworking\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/tags\",\"watchers\":2,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AFNetworking.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/forks\",\"full_name\":\"mralexgray/AFNetworking\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}\",\"pushed_at\":\"2014-01-24T07:14:32Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}\",\"created_at\":\"2012-12-02T17:00:04Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/merges\",\"mirror_url\":null,\"updated_at\":\"2014-01-24T07:14:33Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}\",\"description\":\"A delightful iOS and OS X networking framework\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/stargazers\",\"watchers_count\":2,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}\",\"stargazers_count\":2,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":9485541,\"url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView\",\"fork\":true,\"name\":\"AGNSSplitView\",\"size\":68,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AGNSSplitView.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk5NDg1NTQx\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AGNSSplitView.git\",\"svn_url\":\"https://github.com/mralexgray/AGNSSplitView\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/AGNSSplitView\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AGNSSplitView.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/forks\",\"full_name\":\"mralexgray/AGNSSplitView\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}\",\"pushed_at\":\"2013-02-26T00:32:32Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}\",\"created_at\":\"2013-04-17T00:10:13Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/merges\",\"mirror_url\":null,\"updated_at\":\"2013-04-17T00:10:13Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}\",\"description\":\"Simple NSSplitView additions.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":12767784,\"url\":\"https://api.github.com/repos/mralexgray/AGScopeBar\",\"fork\":true,\"name\":\"AGScopeBar\",\"size\":64,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AGScopeBar.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AGScopeBar.git\",\"svn_url\":\"https://github.com/mralexgray/AGScopeBar\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/AGScopeBar\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AGScopeBar.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/forks\",\"full_name\":\"mralexgray/AGScopeBar\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}\",\"pushed_at\":\"2013-05-07T03:35:29Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}\",\"created_at\":\"2013-09-11T21:06:54Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/merges\",\"mirror_url\":null,\"updated_at\":\"2013-09-11T21:06:54Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}\",\"description\":\"Custom scope bar implementation for Cocoa\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":31829499,\"url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin\",\"fork\":true,\"name\":\"agvtool-xcode-plugin\",\"size\":102,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/agvtool-xcode-plugin.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/agvtool-xcode-plugin.git\",\"svn_url\":\"https://github.com/mralexgray/agvtool-xcode-plugin\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/agvtool-xcode-plugin\",\"keys_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/agvtool-xcode-plugin.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks\",\"full_name\":\"mralexgray/agvtool-xcode-plugin\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}\",\"pushed_at\":\"2015-03-08T00:04:31Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}\",\"created_at\":\"2015-03-07T22:15:38Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges\",\"mirror_url\":null,\"updated_at\":\"2015-03-07T22:15:41Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}\",\"description\":\"this is a plugin wrapper for agvtool for xcode.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":9227846,\"url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser\",\"fork\":true,\"name\":\"AHContentBrowser\",\"size\":223,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AHContentBrowser.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk5MjI3ODQ2\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AHContentBrowser.git\",\"svn_url\":\"https://github.com/mralexgray/AHContentBrowser\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"\",\"html_url\":\"https://github.com/mralexgray/AHContentBrowser\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AHContentBrowser.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/forks\",\"full_name\":\"mralexgray/AHContentBrowser\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}\",\"pushed_at\":\"2013-03-13T17:38:23Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}\",\"created_at\":\"2013-04-04T20:56:16Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/merges\",\"mirror_url\":null,\"updated_at\":\"2015-10-22T05:00:24Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}\",\"description\":\"A Mac only webview that loads a fast readable version of the website if available.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":37430328,\"url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl\",\"fork\":true,\"name\":\"AHLaunchCtl\",\"size\":592,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AHLaunchCtl.git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AHLaunchCtl.git\",\"svn_url\":\"https://github.com/mralexgray/AHLaunchCtl\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"\",\"html_url\":\"https://github.com/mralexgray/AHLaunchCtl\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AHLaunchCtl.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/forks\",\"full_name\":\"mralexgray/AHLaunchCtl\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}\",\"pushed_at\":\"2015-05-26T18:50:48Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}\",\"created_at\":\"2015-06-14T21:31:03Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/merges\",\"mirror_url\":null,\"updated_at\":\"2015-06-14T21:31:04Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}\",\"description\":\"LaunchD Framework for Cocoa Apps\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":9167473,\"url\":\"https://api.github.com/repos/mralexgray/AHLayout\",\"fork\":true,\"name\":\"AHLayout\",\"size\":359,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AHLayout.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk5MTY3NDcz\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AHLayout.git\",\"svn_url\":\"https://github.com/mralexgray/AHLayout\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/AHLayout\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AHLayout/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AHLayout.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AHLayout/forks\",\"full_name\":\"mralexgray/AHLayout\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AHLayout/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}\",\"pushed_at\":\"2013-07-08T02:31:14Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AHLayout/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}\",\"created_at\":\"2013-04-02T10:10:30Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AHLayout/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AHLayout/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AHLayout/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AHLayout/merges\",\"mirror_url\":null,\"updated_at\":\"2013-07-08T02:31:17Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}\",\"description\":\"AHLayout\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AHLayout/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AHLayout/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AHLayout/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AHLayout/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AHLayout/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AHLayout/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AHLayout/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AHLayout/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AHLayout/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":18450201,\"url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework\",\"fork\":true,\"name\":\"Airmail-Plug-In-Framework\",\"size\":888,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Airmail-Plug-In-Framework.git\",\"license\":{\"key\":\"gpl-2.0\",\"url\":\"https://api.github.com/licenses/gpl-2.0\",\"name\":\"GNU General Public License v2.0\",\"node_id\":\"MDc6TGljZW5zZTg=\",\"spdx_id\":\"GPL-2.0\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Airmail-Plug-In-Framework.git\",\"svn_url\":\"https://github.com/mralexgray/Airmail-Plug-In-Framework\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/Airmail-Plug-In-Framework\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}\",\"language\":null,\"tags_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Airmail-Plug-In-Framework.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks\",\"full_name\":\"mralexgray/Airmail-Plug-In-Framework\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}\",\"pushed_at\":\"2014-03-27T15:42:19Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}\",\"created_at\":\"2014-04-04T19:33:54Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges\",\"mirror_url\":null,\"updated_at\":\"2014-11-23T19:31:04Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}\",\"description\":null,\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":5203219,\"url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API\",\"fork\":true,\"name\":\"AJS-iTunes-API\",\"size\":103,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AJS-iTunes-API.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk1MjAzMjE5\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AJS-iTunes-API.git\",\"svn_url\":\"https://github.com/mralexgray/AJS-iTunes-API\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"\",\"html_url\":\"https://github.com/mralexgray/AJS-iTunes-API\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags\",\"watchers\":2,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AJS-iTunes-API.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks\",\"full_name\":\"mralexgray/AJS-iTunes-API\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}\",\"pushed_at\":\"2011-10-30T22:26:48Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}\",\"created_at\":\"2012-07-27T10:20:58Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-11T11:00:05Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}\",\"description\":\"Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers\",\"watchers_count\":2,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}\",\"stargazers_count\":2,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":10093801,\"url\":\"https://api.github.com/repos/mralexgray/Alcatraz\",\"fork\":true,\"name\":\"Alcatraz\",\"size\":3668,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Alcatraz.git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Alcatraz.git\",\"svn_url\":\"https://github.com/mralexgray/Alcatraz\",\"archived\":false,\"disabled\":false,\"has_wiki\":false,\"homepage\":\"mneorr.github.com/Alcatraz\",\"html_url\":\"https://github.com/mralexgray/Alcatraz\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Alcatraz.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/forks\",\"full_name\":\"mralexgray/Alcatraz\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}\",\"pushed_at\":\"2014-03-19T12:50:37Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}\",\"created_at\":\"2013-05-16T04:41:13Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/merges\",\"mirror_url\":null,\"updated_at\":\"2014-03-19T20:38:35Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}\",\"description\":\"The most awesome (and only) Xcode package manager!\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":12916552,\"url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages\",\"fork\":true,\"name\":\"alcatraz-packages\",\"size\":826,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/alcatraz-packages.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/alcatraz-packages.git\",\"svn_url\":\"https://github.com/mralexgray/alcatraz-packages\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"mneorr.github.com/Alcatraz\",\"html_url\":\"https://github.com/mralexgray/alcatraz-packages\",\"keys_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}\",\"language\":\"Ruby\",\"tags_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/alcatraz-packages.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/forks\",\"full_name\":\"mralexgray/alcatraz-packages\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}\",\"pushed_at\":\"2015-12-14T16:21:31Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}\",\"created_at\":\"2013-09-18T07:15:24Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/merges\",\"mirror_url\":null,\"updated_at\":\"2015-11-10T20:52:30Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}\",\"description\":\"Package list repository for Alcatraz\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":44278362,\"url\":\"https://api.github.com/repos/mralexgray/alexicons\",\"fork\":true,\"name\":\"alexicons\",\"size\":257,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/alexicons.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/alexicons.git\",\"svn_url\":\"https://github.com/mralexgray/alexicons\",\"archived\":false,\"disabled\":false,\"has_wiki\":false,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/alexicons\",\"keys_url\":\"https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}\",\"language\":\"CoffeeScript\",\"tags_url\":\"https://api.github.com/repos/mralexgray/alexicons/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/alexicons.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/alexicons/forks\",\"full_name\":\"mralexgray/alexicons\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/alexicons/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/alexicons/pulls{/number}\",\"pushed_at\":\"2015-10-16T03:57:51Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/alexicons/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}\",\"created_at\":\"2015-10-14T21:49:39Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/alexicons/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/alexicons/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/alexicons/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/alexicons/merges\",\"mirror_url\":null,\"updated_at\":\"2015-10-15T06:20:08Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/alexicons/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}\",\"description\":\"Get popular cat names\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/alexicons/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/alexicons/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/alexicons/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/alexicons/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/alexicons/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/alexicons/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/alexicons/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/alexicons/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/alexicons/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/alexicons/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/alexicons/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/alexicons/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/alexicons/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":10476467,\"url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate\",\"fork\":true,\"name\":\"Alfred-Google-Translate\",\"size\":103,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Alfred-Google-Translate.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Alfred-Google-Translate.git\",\"svn_url\":\"https://github.com/mralexgray/Alfred-Google-Translate\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/Alfred-Google-Translate\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}\",\"language\":\"Shell\",\"tags_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Alfred-Google-Translate.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks\",\"full_name\":\"mralexgray/Alfred-Google-Translate\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}\",\"pushed_at\":\"2013-01-12T19:39:03Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}\",\"created_at\":\"2013-06-04T10:45:10Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges\",\"mirror_url\":null,\"updated_at\":\"2013-06-04T10:45:10Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}\",\"description\":\"Extension for Alfred that will do a Google translate for you\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":5524019,\"url\":\"https://api.github.com/repos/mralexgray/Amber\",\"fork\":false,\"name\":\"Amber\",\"size\":48,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Amber.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk1NTI0MDE5\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Amber.git\",\"svn_url\":\"https://github.com/mralexgray/Amber\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/Amber\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Amber/keys{/key_id}\",\"language\":null,\"tags_url\":\"https://api.github.com/repos/mralexgray/Amber/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Amber.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Amber/forks\",\"full_name\":\"mralexgray/Amber\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Amber/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Amber/pulls{/number}\",\"pushed_at\":\"2012-08-23T10:38:25Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Amber/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}\",\"created_at\":\"2012-08-23T10:38:24Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Amber/events\",\"has_issues\":true,\"issues_url\":\"https://api.github.com/repos/mralexgray/Amber/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Amber/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Amber/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-11T22:25:35Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Amber/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}\",\"description\":\"Fork of the difficult-to-deal-with Amber.framework\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Amber/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Amber/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Amber/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Amber/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Amber/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Amber/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Amber/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Amber/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Amber/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Amber/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Amber/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Amber/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Amber/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Amber/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Amber/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":10809060,\"url\":\"https://api.github.com/repos/mralexgray/Amethyst\",\"fork\":true,\"name\":\"Amethyst\",\"size\":12623,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Amethyst.git\",\"license\":{\"key\":\"mit\",\"url\":\"https://api.github.com/licenses/mit\",\"name\":\"MIT License\",\"node_id\":\"MDc6TGljZW5zZTEz\",\"spdx_id\":\"MIT\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Amethyst.git\",\"svn_url\":\"https://github.com/mralexgray/Amethyst\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://ianyh.github.io/Amethyst/\",\"html_url\":\"https://github.com/mralexgray/Amethyst\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/Amethyst/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Amethyst.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Amethyst/forks\",\"full_name\":\"mralexgray/Amethyst\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Amethyst/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}\",\"pushed_at\":\"2013-06-18T02:54:11Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Amethyst/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}\",\"created_at\":\"2013-06-20T00:34:22Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Amethyst/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Amethyst/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Amethyst/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Amethyst/merges\",\"mirror_url\":null,\"updated_at\":\"2013-06-20T00:34:22Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}\",\"description\":\"Tiling window manager for OS X.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Amethyst/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Amethyst/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Amethyst/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Amethyst/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Amethyst/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Amethyst/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Amethyst/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Amethyst/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Amethyst/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":3684286,\"url\":\"https://api.github.com/repos/mralexgray/Animated-Paths\",\"fork\":true,\"name\":\"Animated-Paths\",\"size\":411,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Animated-Paths.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkzNjg0Mjg2\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Animated-Paths.git\",\"svn_url\":\"https://github.com/mralexgray/Animated-Paths\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/\",\"html_url\":\"https://github.com/mralexgray/Animated-Paths\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/tags\",\"watchers\":2,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Animated-Paths.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/forks\",\"full_name\":\"mralexgray/Animated-Paths\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}\",\"pushed_at\":\"2010-12-30T20:56:51Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}\",\"created_at\":\"2012-03-11T02:56:38Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-08T04:12:21Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}\",\"description\":\"Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/stargazers\",\"watchers_count\":2,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}\",\"stargazers_count\":2,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":16662874,\"url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework\",\"fork\":true,\"name\":\"AnsiLove.framework\",\"size\":3780,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AnsiLove.framework.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AnsiLove.framework.git\",\"svn_url\":\"https://github.com/mralexgray/AnsiLove.framework\",\"archived\":false,\"disabled\":false,\"has_wiki\":false,\"homepage\":\"http://byteproject.net\",\"html_url\":\"https://github.com/mralexgray/AnsiLove.framework\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}\",\"language\":\"M\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AnsiLove.framework.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/forks\",\"full_name\":\"mralexgray/AnsiLove.framework\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}\",\"pushed_at\":\"2013-10-04T14:08:38Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}\",\"created_at\":\"2014-02-09T08:30:27Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/merges\",\"mirror_url\":null,\"updated_at\":\"2015-01-13T20:41:46Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}\",\"description\":\"Cocoa Framework for rendering ANSi / ASCII art\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":5189563,\"url\":\"https://api.github.com/repos/mralexgray/ANTrackBar\",\"fork\":true,\"name\":\"ANTrackBar\",\"size\":94,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/ANTrackBar.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnk1MTg5NTYz\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/ANTrackBar.git\",\"svn_url\":\"https://github.com/mralexgray/ANTrackBar\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"\",\"html_url\":\"https://github.com/mralexgray/ANTrackBar\",\"keys_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/tags\",\"watchers\":2,\"blobs_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/ANTrackBar.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/forks\",\"full_name\":\"mralexgray/ANTrackBar\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}\",\"pushed_at\":\"2012-03-09T01:40:02Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}\",\"created_at\":\"2012-07-26T08:17:22Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/merges\",\"mirror_url\":null,\"updated_at\":\"2013-01-11T10:29:56Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}\",\"description\":\"An easy-to-use Cocoa seek bar with a pleasing appearance\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/stargazers\",\"watchers_count\":2,\"deployments_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}\",\"stargazers_count\":2,\"subscription_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":16240152,\"url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C\",\"fork\":true,\"name\":\"AOP-in-Objective-C\",\"size\":340,\"forks\":1,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/AOP-in-Objective-C.git\",\"license\":null,\"node_id\":\"MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/AOP-in-Objective-C.git\",\"svn_url\":\"https://github.com/mralexgray/AOP-in-Objective-C\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":\"http://innoli.hu/en/opensource/\",\"html_url\":\"https://github.com/mralexgray/AOP-in-Objective-C\",\"keys_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}\",\"language\":\"Objective-C\",\"tags_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/AOP-in-Objective-C.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks\",\"full_name\":\"mralexgray/AOP-in-Objective-C\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}\",\"pushed_at\":\"2014-02-12T16:23:20Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}\",\"created_at\":\"2014-01-25T21:18:04Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges\",\"mirror_url\":null,\"updated_at\":\"2014-06-19T19:38:12Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}\",\"description\":\"An NSProxy based library for easily enabling AOP like functionality in Objective-C.\",\"forks_count\":1,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages\",\"default_branch\":\"travis-coveralls\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":13141936,\"url\":\"https://api.github.com/repos/mralexgray/Apaxy\",\"fork\":true,\"name\":\"Apaxy\",\"size\":113,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/Apaxy.git\",\"license\":{\"key\":\"unlicense\",\"url\":\"https://api.github.com/licenses/unlicense\",\"name\":\"The Unlicense\",\"node_id\":\"MDc6TGljZW5zZTE1\",\"spdx_id\":\"Unlicense\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/Apaxy.git\",\"svn_url\":\"https://github.com/mralexgray/Apaxy\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/Apaxy\",\"keys_url\":\"https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}\",\"language\":\"CSS\",\"tags_url\":\"https://api.github.com/repos/mralexgray/Apaxy/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/Apaxy.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/Apaxy/forks\",\"full_name\":\"mralexgray/Apaxy\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/Apaxy/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}\",\"pushed_at\":\"2013-08-02T16:01:32Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/Apaxy/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}\",\"created_at\":\"2013-09-27T05:05:35Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/Apaxy/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/Apaxy/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/Apaxy/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/Apaxy/merges\",\"mirror_url\":null,\"updated_at\":\"2018-02-16T21:40:24Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}\",\"description\":\"A simple, customisable theme for your Apache directory listing.\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/Apaxy/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/Apaxy/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/Apaxy/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/Apaxy/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/Apaxy/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/Apaxy/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/Apaxy/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/Apaxy/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/Apaxy/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false},{\"id\":20027360,\"url\":\"https://api.github.com/repos/mralexgray/app\",\"fork\":true,\"name\":\"app\",\"size\":1890,\"forks\":0,\"owner\":{\"id\":262517,\"url\":\"https://api.github.com/users/mralexgray\",\"type\":\"User\",\"login\":\"mralexgray\",\"node_id\":\"MDQ6VXNlcjI2MjUxNw==\",\"html_url\":\"https://github.com/mralexgray\",\"gists_url\":\"https://api.github.com/users/mralexgray/gists{/gist_id}\",\"repos_url\":\"https://api.github.com/users/mralexgray/repos\",\"avatar_url\":\"https://avatars.githubusercontent.com/u/262517?v=4\",\"events_url\":\"https://api.github.com/users/mralexgray/events{/privacy}\",\"site_admin\":false,\"gravatar_id\":\"\",\"starred_url\":\"https://api.github.com/users/mralexgray/starred{/owner}{/repo}\",\"followers_url\":\"https://api.github.com/users/mralexgray/followers\",\"following_url\":\"https://api.github.com/users/mralexgray/following{/other_user}\",\"organizations_url\":\"https://api.github.com/users/mralexgray/orgs\",\"subscriptions_url\":\"https://api.github.com/users/mralexgray/subscriptions\",\"received_events_url\":\"https://api.github.com/users/mralexgray/received_events\"},\"topics\":[],\"git_url\":\"git://github.com/mralexgray/app.git\",\"license\":{\"key\":\"other\",\"url\":null,\"name\":\"Other\",\"node_id\":\"MDc6TGljZW5zZTA=\",\"spdx_id\":\"NOASSERTION\"},\"node_id\":\"MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==\",\"private\":false,\"ssh_url\":\"git@github.com:mralexgray/app.git\",\"svn_url\":\"https://github.com/mralexgray/app\",\"archived\":false,\"disabled\":false,\"has_wiki\":true,\"homepage\":null,\"html_url\":\"https://github.com/mralexgray/app\",\"keys_url\":\"https://api.github.com/repos/mralexgray/app/keys{/key_id}\",\"language\":\"JavaScript\",\"tags_url\":\"https://api.github.com/repos/mralexgray/app/tags\",\"watchers\":0,\"blobs_url\":\"https://api.github.com/repos/mralexgray/app/git/blobs{/sha}\",\"clone_url\":\"https://github.com/mralexgray/app.git\",\"forks_url\":\"https://api.github.com/repos/mralexgray/app/forks\",\"full_name\":\"mralexgray/app\",\"has_pages\":false,\"hooks_url\":\"https://api.github.com/repos/mralexgray/app/hooks\",\"pulls_url\":\"https://api.github.com/repos/mralexgray/app/pulls{/number}\",\"pushed_at\":\"2014-05-20T19:51:38Z\",\"teams_url\":\"https://api.github.com/repos/mralexgray/app/teams\",\"trees_url\":\"https://api.github.com/repos/mralexgray/app/git/trees{/sha}\",\"created_at\":\"2014-05-21T15:54:20Z\",\"events_url\":\"https://api.github.com/repos/mralexgray/app/events\",\"has_issues\":false,\"issues_url\":\"https://api.github.com/repos/mralexgray/app/issues{/number}\",\"labels_url\":\"https://api.github.com/repos/mralexgray/app/labels{/name}\",\"merges_url\":\"https://api.github.com/repos/mralexgray/app/merges\",\"mirror_url\":null,\"updated_at\":\"2014-05-21T15:54:22Z\",\"visibility\":\"public\",\"archive_url\":\"https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}\",\"commits_url\":\"https://api.github.com/repos/mralexgray/app/commits{/sha}\",\"compare_url\":\"https://api.github.com/repos/mralexgray/app/compare/{base}...{head}\",\"description\":\"Instant mobile web app creation\",\"forks_count\":0,\"is_template\":false,\"open_issues\":0,\"branches_url\":\"https://api.github.com/repos/mralexgray/app/branches{/branch}\",\"comments_url\":\"https://api.github.com/repos/mralexgray/app/comments{/number}\",\"contents_url\":\"https://api.github.com/repos/mralexgray/app/contents/{+path}\",\"git_refs_url\":\"https://api.github.com/repos/mralexgray/app/git/refs{/sha}\",\"git_tags_url\":\"https://api.github.com/repos/mralexgray/app/git/tags{/sha}\",\"has_projects\":true,\"releases_url\":\"https://api.github.com/repos/mralexgray/app/releases{/id}\",\"statuses_url\":\"https://api.github.com/repos/mralexgray/app/statuses/{sha}\",\"allow_forking\":true,\"assignees_url\":\"https://api.github.com/repos/mralexgray/app/assignees{/user}\",\"downloads_url\":\"https://api.github.com/repos/mralexgray/app/downloads\",\"has_downloads\":true,\"languages_url\":\"https://api.github.com/repos/mralexgray/app/languages\",\"default_branch\":\"master\",\"milestones_url\":\"https://api.github.com/repos/mralexgray/app/milestones{/number}\",\"stargazers_url\":\"https://api.github.com/repos/mralexgray/app/stargazers\",\"watchers_count\":0,\"deployments_url\":\"https://api.github.com/repos/mralexgray/app/deployments\",\"git_commits_url\":\"https://api.github.com/repos/mralexgray/app/git/commits{/sha}\",\"subscribers_url\":\"https://api.github.com/repos/mralexgray/app/subscribers\",\"contributors_url\":\"https://api.github.com/repos/mralexgray/app/contributors\",\"issue_events_url\":\"https://api.github.com/repos/mralexgray/app/issues/events{/number}\",\"stargazers_count\":0,\"subscription_url\":\"https://api.github.com/repos/mralexgray/app/subscription\",\"collaborators_url\":\"https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}\",\"issue_comment_url\":\"https://api.github.com/repos/mralexgray/app/issues/comments{/number}\",\"notifications_url\":\"https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}\",\"open_issues_count\":0,\"web_commit_signoff_required\":false}],\"name\":\"Shirt\",\"revenue\":4.99},\"receivedAt\":\"2022-08-18T08:43:13.521+05:30\",\"request_ip\":\"[::1]\",\"anonymousId\":\"anon-id-new\",\"originalTimestamp\":\"2022-08-18T08:43:15.539+05:30\"},{\"name\":\"Page View\",\"type\":\"page\",\"sentAt\":\"2022-08-18T08:43:15.539+05:30\",\"userId\":\"identified user id\",\"context\":{\"ip\":\"14.5.67.21\",\"library\":{\"name\":\"http\"}},\"rudderId\":\"daf823fb-e8d3-413a-8313-d34cd756f968\",\"messageId\":\"5f58d1f7-cbd6-4bff-8571-9933be7210b1\",\"timestamp\":\"2020-02-02T00:23:09.544Z\",\"properties\":{\"path\":\"/\",\"title\":\"Home\"},\"receivedAt\":\"2022-08-18T08:43:13.521+05:30\",\"request_ip\":\"[::1]\",\"anonymousId\":\"anon-id-new\",\"originalTimestamp\":\"2022-08-18T08:43:15.539+05:30\"}]",
- "destConfig": {
- "clientContext": "",
- "lambda": "testFunction",
- "invocationType": "Event"
- }
- },
- "metadata": [
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 32,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "dc239cd1-bef4-4999-88e1-7332c64bf78c",
- "JobID": 32,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "track",
- "event": "Product Purchased new",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "9f8fb785-c720-4381-a009-bf22a13f4ced",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "name": "Shirt",
- "revenue": 4.99
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 48375,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "Product Purchased new",
- "event_type": "track",
- "message_id": "9f8fb785-c720-4381-a009-bf22a13f4ced",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 33,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "bf616af4-2c6b-495f-8b2d-b522c93bdca2",
- "JobID": 33,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "name": "Page View",
- "type": "page",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "5f58d1f7-cbd6-4bff-8571-9933be7210b1",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "path": "/",
- "title": "Home"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 548,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "page",
- "message_id": "5f58d1f7-cbd6-4bff-8571-9933be7210b1",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- }
- ],
- "batched": false,
- "statusCode": 200
- },
- {
- "batchedRequest": {
- "payload": "[{\"name\":\"Screen View\",\"type\":\"screen\",\"sentAt\":\"2022-08-18T08:43:15.539+05:30\",\"userId\":\"identified user id\",\"context\":{\"ip\":\"14.5.67.21\",\"library\":{\"name\":\"http\"}},\"rudderId\":\"daf823fb-e8d3-413a-8313-d34cd756f968\",\"messageId\":\"1b8ee4c3-ffad-4457-b453-31b32da1dfea\",\"timestamp\":\"2020-02-02T00:23:09.544Z\",\"properties\":{\"prop1\":\"5\"},\"receivedAt\":\"2022-08-18T08:43:13.521+05:30\",\"request_ip\":\"[::1]\",\"anonymousId\":\"anon-id-new\",\"originalTimestamp\":\"2022-08-18T08:43:15.539+05:30\"},{\"type\":\"group\",\"sentAt\":\"2022-08-18T08:43:15.539+05:30\",\"traits\":{\"name\":\"Company\",\"industry\":\"Industry\",\"employees\":123},\"userId\":\"user123\",\"context\":{\"ip\":\"14.5.67.21\",\"traits\":{\"trait1\":\"new-val\"},\"library\":{\"name\":\"http\"}},\"groupId\":\"group1\",\"rudderId\":\"bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5\",\"messageId\":\"2c59b527-3235-4fc2-9680-f41ec52ebb51\",\"timestamp\":\"2020-01-21T00:21:34.208Z\",\"receivedAt\":\"2022-08-18T08:43:13.521+05:30\",\"request_ip\":\"[::1]\",\"originalTimestamp\":\"2022-08-18T08:43:15.539+05:30\"}]",
- "destConfig": {
- "clientContext": "",
- "lambda": "testFunction",
- "invocationType": "Event"
- }
- },
- "metadata": [
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 34,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "8faa9d6d-d8a8-468c-bef4-c2db52f6101b",
- "JobID": 34,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "name": "Screen View",
- "type": "screen",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "1b8ee4c3-ffad-4457-b453-31b32da1dfea",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "properties": {
- "prop1": "5"
- },
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 536,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "screen",
- "message_id": "1b8ee4c3-ffad-4457-b453-31b32da1dfea",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- },
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 35,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "73cea314-998a-4b72-8004-34b0618093a3",
- "JobID": 35,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "group",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "traits": {
- "name": "Company",
- "industry": "Industry",
- "employees": 123
- },
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "groupId": "group1",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "2c59b527-3235-4fc2-9680-f41ec52ebb51",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 589,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "group",
- "message_id": "2c59b527-3235-4fc2-9680-f41ec52ebb51",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- }
- ],
- "batched": false,
- "statusCode": 200
- },
- {
- "batchedRequest": {
- "payload": "[{\"type\":\"alias\",\"sentAt\":\"2022-08-18T08:43:15.539+05:30\",\"userId\":\"user123\",\"context\":{\"ip\":\"14.5.67.21\",\"traits\":{\"trait1\":\"new-val\"},\"library\":{\"name\":\"http\"}},\"rudderId\":\"bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5\",\"messageId\":\"3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d\",\"timestamp\":\"2020-01-21T00:21:34.208Z\",\"previousId\":\"previd1\",\"receivedAt\":\"2022-08-18T08:43:13.521+05:30\",\"request_ip\":\"[::1]\",\"originalTimestamp\":\"2022-08-18T08:43:15.539+05:30\"}]",
- "destConfig": {
- "clientContext": "",
- "lambda": "testFunction",
- "invocationType": "Event"
- }
- },
- "metadata": [
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 36,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "ac80629c-9eb6-4e92-bee8-4647e88f7fc0",
- "JobID": 36,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "alias",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "user123",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "messageId": "3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "previousId": "previd1",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 506,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "alias",
- "message_id": "3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- }
- ],
- "batched": false,
- "statusCode": 200
- },
- {
- "metadata": [
- {
- "userId": "anon-id-new<<>>identified user id",
- "jobId": 31,
- "sourceId": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "destinationId": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "attemptNum": 0,
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "createdAt": "2022-08-18T03:13:15.549Z",
- "firstAttemptedAt": "",
- "transformAt": "router",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "secret": null,
- "jobsT": {
- "UUID": "47b3937a-1fef-49fa-85c8-649673bd7170",
- "JobID": 31,
- "UserID": "anon-id-new<<>>identified user id",
- "CreatedAt": "2022-08-18T03:13:15.549078Z",
- "ExpireAt": "2022-08-18T03:13:15.549078Z",
- "CustomVal": "LAMBDA",
- "EventCount": 1,
- "EventPayload": {
- "type": "identify",
- "sentAt": "2022-08-18T08:43:15.539+05:30",
- "userId": "identified user id",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "data": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "data2": [
- {
- "id": 6104546,
- "url": "https://api.github.com/repos/mralexgray/-REPONAME",
- "fork": false,
- "name": "-REPONAME",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/-REPONAME.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk2MTA0NTQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/-REPONAME.git",
- "svn_url": "https://github.com/mralexgray/-REPONAME",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/-REPONAME",
- "keys_url": "https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/-REPONAME.git",
- "forks_url": "https://api.github.com/repos/mralexgray/-REPONAME/forks",
- "full_name": "mralexgray/-REPONAME",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/-REPONAME/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}",
- "pushed_at": "2012-10-06T16:37:39Z",
- "teams_url": "https://api.github.com/repos/mralexgray/-REPONAME/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}",
- "created_at": "2012-10-06T16:37:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/-REPONAME/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/-REPONAME/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T13:39:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/-REPONAME/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/-REPONAME/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/-REPONAME/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/-REPONAME/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/-REPONAME/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/-REPONAME/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 104510411,
- "url": "https://api.github.com/repos/mralexgray/...",
- "fork": true,
- "name": "...",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/....git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/....git",
- "svn_url": "https://github.com/mralexgray/...",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "https://driesvints.com/blog/getting-started-with-dotfiles",
- "html_url": "https://github.com/mralexgray/...",
- "keys_url": "https://api.github.com/repos/mralexgray/.../keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/.../tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/.../git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/....git",
- "forks_url": "https://api.github.com/repos/mralexgray/.../forks",
- "full_name": "mralexgray/...",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/.../hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/.../pulls{/number}",
- "pushed_at": "2017-09-15T08:27:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/.../teams",
- "trees_url": "https://api.github.com/repos/mralexgray/.../git/trees{/sha}",
- "created_at": "2017-09-22T19:19:42Z",
- "events_url": "https://api.github.com/repos/mralexgray/.../events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/.../issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/.../labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/.../merges",
- "mirror_url": null,
- "updated_at": "2017-09-22T19:20:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/.../commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/.../compare/{base}...{head}",
- "description": ":computer: Public repo for my personal dotfiles.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/.../branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/.../comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/.../contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/.../git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/.../git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/.../releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/.../statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/.../assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/.../downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/.../languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/.../milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/.../stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/.../deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/.../git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/.../subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/.../contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/.../issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/.../subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/.../issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 58656723,
- "url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol",
- "fork": true,
- "name": "2200087-Serial-Protocol",
- "size": 41,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/2200087-Serial-Protocol.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/2200087-Serial-Protocol.git",
- "svn_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://daviddworken.com",
- "html_url": "https://github.com/mralexgray/2200087-Serial-Protocol",
- "keys_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}",
- "language": "Python",
- "tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/2200087-Serial-Protocol.git",
- "forks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks",
- "full_name": "mralexgray/2200087-Serial-Protocol",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}",
- "pushed_at": "2016-05-12T16:07:24Z",
- "teams_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}",
- "created_at": "2016-05-12T16:05:28Z",
- "events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges",
- "mirror_url": null,
- "updated_at": "2016-05-12T16:05:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}",
- "description": "A reverse engineered protocol description and accompanying code for Radioshack's 2200087 multimeter",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13121042,
- "url": "https://api.github.com/repos/mralexgray/ace",
- "fork": true,
- "name": "ace",
- "size": 21080,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ace.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ace.git",
- "svn_url": "https://github.com/mralexgray/ace",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ace.c9.io",
- "html_url": "https://github.com/mralexgray/ace",
- "keys_url": "https://api.github.com/repos/mralexgray/ace/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/ace/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ace.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ace/forks",
- "full_name": "mralexgray/ace",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ace/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ace/pulls{/number}",
- "pushed_at": "2013-10-26T12:34:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ace/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ace/git/trees{/sha}",
- "created_at": "2013-09-26T11:58:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/ace/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ace/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ace/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ace/merges",
- "mirror_url": null,
- "updated_at": "2013-10-26T12:34:49Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ace/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}",
- "description": "Ace (Ajax.org Cloud9 Editor)",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ace/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ace/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ace/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ace/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ace/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ace/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ace/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ace/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ace/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ace/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ace/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ace/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ace/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ace/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ace/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ace/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ace/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ace/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ace/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10791045,
- "url": "https://api.github.com/repos/mralexgray/ACEView",
- "fork": true,
- "name": "ACEView",
- "size": 1733,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ACEView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ACEView.git",
- "svn_url": "https://github.com/mralexgray/ACEView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/ACEView",
- "keys_url": "https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ACEView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ACEView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ACEView/forks",
- "full_name": "mralexgray/ACEView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ACEView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ACEView/pulls{/number}",
- "pushed_at": "2014-05-09T01:36:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ACEView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}",
- "created_at": "2013-06-19T12:15:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/ACEView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ACEView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ACEView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ACEView/merges",
- "mirror_url": null,
- "updated_at": "2015-11-24T01:14:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ACEView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}",
- "description": "Use the wonderful ACE editor in your Cocoa applications",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ACEView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ACEView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ACEView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ACEView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ACEView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ACEView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ACEView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ACEView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ACEView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ACEView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ACEView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ACEView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ACEView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13623648,
- "url": "https://api.github.com/repos/mralexgray/ActiveLog",
- "fork": true,
- "name": "ActiveLog",
- "size": 60,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ActiveLog.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ActiveLog.git",
- "svn_url": "https://github.com/mralexgray/ActiveLog",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://deepitpro.com/en/articles/ActiveLog/info/",
- "html_url": "https://github.com/mralexgray/ActiveLog",
- "keys_url": "https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ActiveLog.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ActiveLog/forks",
- "full_name": "mralexgray/ActiveLog",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ActiveLog/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}",
- "pushed_at": "2011-07-03T06:28:59Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ActiveLog/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}",
- "created_at": "2013-10-16T15:52:37Z",
- "events_url": "https://api.github.com/repos/mralexgray/ActiveLog/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ActiveLog/merges",
- "mirror_url": null,
- "updated_at": "2013-10-16T15:52:37Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}",
- "description": "Shut up all logs with active filter.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ActiveLog/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ActiveLog/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ActiveLog/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ActiveLog/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ActiveLog/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ActiveLog/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9716210,
- "url": "https://api.github.com/repos/mralexgray/adium",
- "fork": false,
- "name": "adium",
- "size": 277719,
- "forks": 37,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/adium.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk5NzE2MjEw",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/adium.git",
- "svn_url": "https://github.com/mralexgray/adium",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/adium",
- "keys_url": "https://api.github.com/repos/mralexgray/adium/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/adium/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/adium.git",
- "forks_url": "https://api.github.com/repos/mralexgray/adium/forks",
- "full_name": "mralexgray/adium",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/adium/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/adium/pulls{/number}",
- "pushed_at": "2013-04-26T16:43:53Z",
- "teams_url": "https://api.github.com/repos/mralexgray/adium/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/adium/git/trees{/sha}",
- "created_at": "2013-04-27T14:59:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/adium/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/adium/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/adium/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/adium/merges",
- "mirror_url": null,
- "updated_at": "2019-12-11T06:51:45Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/adium/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}",
- "description": "Official mirror of hg.adium.im",
- "forks_count": 37,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/adium/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/adium/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/adium/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/adium/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/adium/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/adium/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/adium/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/adium/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/adium/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/adium/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/adium/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/adium/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/adium/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/adium/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/adium/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/adium/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/adium/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/adium/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/adium/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12752329,
- "url": "https://api.github.com/repos/mralexgray/ADLivelyTableView",
- "fork": true,
- "name": "ADLivelyTableView",
- "size": 73,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ADLivelyTableView.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ADLivelyTableView.git",
- "svn_url": "https://github.com/mralexgray/ADLivelyTableView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://applidium.com/en/news/lively_uitableview/",
- "html_url": "https://github.com/mralexgray/ADLivelyTableView",
- "keys_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ADLivelyTableView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/forks",
- "full_name": "mralexgray/ADLivelyTableView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}",
- "pushed_at": "2012-05-10T10:40:15Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}",
- "created_at": "2013-09-11T09:18:01Z",
- "events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T09:18:03Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}",
- "description": "Lively UITableView",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5697379,
- "url": "https://api.github.com/repos/mralexgray/AFIncrementalStore",
- "fork": true,
- "name": "AFIncrementalStore",
- "size": 139,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFIncrementalStore.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk1Njk3Mzc5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFIncrementalStore.git",
- "svn_url": "https://github.com/mralexgray/AFIncrementalStore",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AFIncrementalStore",
- "keys_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFIncrementalStore.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/forks",
- "full_name": "mralexgray/AFIncrementalStore",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}",
- "pushed_at": "2012-09-01T22:46:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}",
- "created_at": "2012-09-06T04:20:33Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/merges",
- "mirror_url": null,
- "updated_at": "2013-01-12T03:15:29Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}",
- "description": "Core Data Persistence with AFNetworking, Done Right",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 6969621,
- "url": "https://api.github.com/repos/mralexgray/AFNetworking",
- "fork": true,
- "name": "AFNetworking",
- "size": 4341,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AFNetworking.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnk2OTY5NjIx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AFNetworking.git",
- "svn_url": "https://github.com/mralexgray/AFNetworking",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://afnetworking.com",
- "html_url": "https://github.com/mralexgray/AFNetworking",
- "keys_url": "https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AFNetworking.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AFNetworking/forks",
- "full_name": "mralexgray/AFNetworking",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AFNetworking/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}",
- "pushed_at": "2014-01-24T07:14:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AFNetworking/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}",
- "created_at": "2012-12-02T17:00:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AFNetworking/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AFNetworking/merges",
- "mirror_url": null,
- "updated_at": "2014-01-24T07:14:33Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}",
- "description": "A delightful iOS and OS X networking framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AFNetworking/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AFNetworking/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AFNetworking/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AFNetworking/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AFNetworking/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AFNetworking/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9485541,
- "url": "https://api.github.com/repos/mralexgray/AGNSSplitView",
- "fork": true,
- "name": "AGNSSplitView",
- "size": 68,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGNSSplitView.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5NDg1NTQx",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGNSSplitView.git",
- "svn_url": "https://github.com/mralexgray/AGNSSplitView",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGNSSplitView",
- "keys_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGNSSplitView.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/forks",
- "full_name": "mralexgray/AGNSSplitView",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}",
- "pushed_at": "2013-02-26T00:32:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}",
- "created_at": "2013-04-17T00:10:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/merges",
- "mirror_url": null,
- "updated_at": "2013-04-17T00:10:13Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}",
- "description": "Simple NSSplitView additions.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12767784,
- "url": "https://api.github.com/repos/mralexgray/AGScopeBar",
- "fork": true,
- "name": "AGScopeBar",
- "size": 64,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AGScopeBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AGScopeBar.git",
- "svn_url": "https://github.com/mralexgray/AGScopeBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AGScopeBar",
- "keys_url": "https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AGScopeBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/forks",
- "full_name": "mralexgray/AGScopeBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AGScopeBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}",
- "pushed_at": "2013-05-07T03:35:29Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AGScopeBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}",
- "created_at": "2013-09-11T21:06:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AGScopeBar/merges",
- "mirror_url": null,
- "updated_at": "2013-09-11T21:06:54Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}",
- "description": "Custom scope bar implementation for Cocoa",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AGScopeBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AGScopeBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AGScopeBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AGScopeBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AGScopeBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 31829499,
- "url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin",
- "fork": true,
- "name": "agvtool-xcode-plugin",
- "size": 102,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/agvtool-xcode-plugin.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/agvtool-xcode-plugin.git",
- "svn_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/agvtool-xcode-plugin",
- "keys_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/agvtool-xcode-plugin.git",
- "forks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks",
- "full_name": "mralexgray/agvtool-xcode-plugin",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}",
- "pushed_at": "2015-03-08T00:04:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}",
- "created_at": "2015-03-07T22:15:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges",
- "mirror_url": null,
- "updated_at": "2015-03-07T22:15:41Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}",
- "description": "this is a plugin wrapper for agvtool for xcode.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9227846,
- "url": "https://api.github.com/repos/mralexgray/AHContentBrowser",
- "fork": true,
- "name": "AHContentBrowser",
- "size": 223,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHContentBrowser.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MjI3ODQ2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHContentBrowser.git",
- "svn_url": "https://github.com/mralexgray/AHContentBrowser",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHContentBrowser",
- "keys_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHContentBrowser.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/forks",
- "full_name": "mralexgray/AHContentBrowser",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}",
- "pushed_at": "2013-03-13T17:38:23Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}",
- "created_at": "2013-04-04T20:56:16Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/merges",
- "mirror_url": null,
- "updated_at": "2015-10-22T05:00:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}",
- "description": "A Mac only webview that loads a fast readable version of the website if available.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 37430328,
- "url": "https://api.github.com/repos/mralexgray/AHLaunchCtl",
- "fork": true,
- "name": "AHLaunchCtl",
- "size": 592,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLaunchCtl.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLaunchCtl.git",
- "svn_url": "https://github.com/mralexgray/AHLaunchCtl",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AHLaunchCtl",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLaunchCtl.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/forks",
- "full_name": "mralexgray/AHLaunchCtl",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}",
- "pushed_at": "2015-05-26T18:50:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}",
- "created_at": "2015-06-14T21:31:03Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/merges",
- "mirror_url": null,
- "updated_at": "2015-06-14T21:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}",
- "description": "LaunchD Framework for Cocoa Apps",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 9167473,
- "url": "https://api.github.com/repos/mralexgray/AHLayout",
- "fork": true,
- "name": "AHLayout",
- "size": 359,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AHLayout.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk5MTY3NDcz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AHLayout.git",
- "svn_url": "https://github.com/mralexgray/AHLayout",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/AHLayout",
- "keys_url": "https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AHLayout/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AHLayout.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AHLayout/forks",
- "full_name": "mralexgray/AHLayout",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AHLayout/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}",
- "pushed_at": "2013-07-08T02:31:14Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AHLayout/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}",
- "created_at": "2013-04-02T10:10:30Z",
- "events_url": "https://api.github.com/repos/mralexgray/AHLayout/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AHLayout/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AHLayout/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AHLayout/merges",
- "mirror_url": null,
- "updated_at": "2013-07-08T02:31:17Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}",
- "description": "AHLayout",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AHLayout/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AHLayout/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AHLayout/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AHLayout/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AHLayout/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AHLayout/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AHLayout/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AHLayout/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AHLayout/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 18450201,
- "url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework",
- "fork": true,
- "name": "Airmail-Plug-In-Framework",
- "size": 888,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "license": {
- "key": "gpl-2.0",
- "url": "https://api.github.com/licenses/gpl-2.0",
- "name": "GNU General Public License v2.0",
- "node_id": "MDc6TGljZW5zZTg=",
- "spdx_id": "GPL-2.0"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Airmail-Plug-In-Framework.git",
- "svn_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework",
- "keys_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Airmail-Plug-In-Framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks",
- "full_name": "mralexgray/Airmail-Plug-In-Framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}",
- "pushed_at": "2014-03-27T15:42:19Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}",
- "created_at": "2014-04-04T19:33:54Z",
- "events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges",
- "mirror_url": null,
- "updated_at": "2014-11-23T19:31:04Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}",
- "description": null,
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5203219,
- "url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API",
- "fork": true,
- "name": "AJS-iTunes-API",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AJS-iTunes-API.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MjAzMjE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AJS-iTunes-API.git",
- "svn_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/AJS-iTunes-API",
- "keys_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AJS-iTunes-API.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks",
- "full_name": "mralexgray/AJS-iTunes-API",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}",
- "pushed_at": "2011-10-30T22:26:48Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}",
- "created_at": "2012-07-27T10:20:58Z",
- "events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T11:00:05Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}",
- "description": "Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10093801,
- "url": "https://api.github.com/repos/mralexgray/Alcatraz",
- "fork": true,
- "name": "Alcatraz",
- "size": 3668,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alcatraz.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alcatraz.git",
- "svn_url": "https://github.com/mralexgray/Alcatraz",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/Alcatraz",
- "keys_url": "https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alcatraz.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alcatraz/forks",
- "full_name": "mralexgray/Alcatraz",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alcatraz/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}",
- "pushed_at": "2014-03-19T12:50:37Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alcatraz/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}",
- "created_at": "2013-05-16T04:41:13Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alcatraz/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alcatraz/merges",
- "mirror_url": null,
- "updated_at": "2014-03-19T20:38:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}",
- "description": "The most awesome (and only) Xcode package manager!",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alcatraz/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alcatraz/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alcatraz/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alcatraz/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alcatraz/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alcatraz/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 12916552,
- "url": "https://api.github.com/repos/mralexgray/alcatraz-packages",
- "fork": true,
- "name": "alcatraz-packages",
- "size": 826,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alcatraz-packages.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alcatraz-packages.git",
- "svn_url": "https://github.com/mralexgray/alcatraz-packages",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "mneorr.github.com/Alcatraz",
- "html_url": "https://github.com/mralexgray/alcatraz-packages",
- "keys_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}",
- "language": "Ruby",
- "tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alcatraz-packages.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/forks",
- "full_name": "mralexgray/alcatraz-packages",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}",
- "pushed_at": "2015-12-14T16:21:31Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}",
- "created_at": "2013-09-18T07:15:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/merges",
- "mirror_url": null,
- "updated_at": "2015-11-10T20:52:30Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}",
- "description": "Package list repository for Alcatraz",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 44278362,
- "url": "https://api.github.com/repos/mralexgray/alexicons",
- "fork": true,
- "name": "alexicons",
- "size": 257,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/alexicons.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/alexicons.git",
- "svn_url": "https://github.com/mralexgray/alexicons",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/alexicons",
- "keys_url": "https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}",
- "language": "CoffeeScript",
- "tags_url": "https://api.github.com/repos/mralexgray/alexicons/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/alexicons.git",
- "forks_url": "https://api.github.com/repos/mralexgray/alexicons/forks",
- "full_name": "mralexgray/alexicons",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/alexicons/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/alexicons/pulls{/number}",
- "pushed_at": "2015-10-16T03:57:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/alexicons/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}",
- "created_at": "2015-10-14T21:49:39Z",
- "events_url": "https://api.github.com/repos/mralexgray/alexicons/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/alexicons/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/alexicons/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/alexicons/merges",
- "mirror_url": null,
- "updated_at": "2015-10-15T06:20:08Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/alexicons/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}",
- "description": "Get popular cat names",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/alexicons/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/alexicons/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/alexicons/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/alexicons/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/alexicons/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/alexicons/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/alexicons/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/alexicons/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/alexicons/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/alexicons/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/alexicons/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/alexicons/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/alexicons/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10476467,
- "url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate",
- "fork": true,
- "name": "Alfred-Google-Translate",
- "size": 103,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Alfred-Google-Translate.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Alfred-Google-Translate.git",
- "svn_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Alfred-Google-Translate",
- "keys_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}",
- "language": "Shell",
- "tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Alfred-Google-Translate.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks",
- "full_name": "mralexgray/Alfred-Google-Translate",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}",
- "pushed_at": "2013-01-12T19:39:03Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}",
- "created_at": "2013-06-04T10:45:10Z",
- "events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges",
- "mirror_url": null,
- "updated_at": "2013-06-04T10:45:10Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}",
- "description": "Extension for Alfred that will do a Google translate for you",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5524019,
- "url": "https://api.github.com/repos/mralexgray/Amber",
- "fork": false,
- "name": "Amber",
- "size": 48,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amber.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1NTI0MDE5",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amber.git",
- "svn_url": "https://github.com/mralexgray/Amber",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Amber",
- "keys_url": "https://api.github.com/repos/mralexgray/Amber/keys{/key_id}",
- "language": null,
- "tags_url": "https://api.github.com/repos/mralexgray/Amber/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amber.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amber/forks",
- "full_name": "mralexgray/Amber",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amber/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amber/pulls{/number}",
- "pushed_at": "2012-08-23T10:38:25Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amber/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}",
- "created_at": "2012-08-23T10:38:24Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amber/events",
- "has_issues": true,
- "issues_url": "https://api.github.com/repos/mralexgray/Amber/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amber/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amber/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T22:25:35Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amber/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}",
- "description": "Fork of the difficult-to-deal-with Amber.framework",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amber/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amber/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amber/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amber/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amber/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amber/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amber/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amber/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amber/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amber/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amber/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amber/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amber/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amber/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amber/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 10809060,
- "url": "https://api.github.com/repos/mralexgray/Amethyst",
- "fork": true,
- "name": "Amethyst",
- "size": 12623,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Amethyst.git",
- "license": {
- "key": "mit",
- "url": "https://api.github.com/licenses/mit",
- "name": "MIT License",
- "node_id": "MDc6TGljZW5zZTEz",
- "spdx_id": "MIT"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Amethyst.git",
- "svn_url": "https://github.com/mralexgray/Amethyst",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://ianyh.github.io/Amethyst/",
- "html_url": "https://github.com/mralexgray/Amethyst",
- "keys_url": "https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Amethyst/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Amethyst.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Amethyst/forks",
- "full_name": "mralexgray/Amethyst",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Amethyst/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}",
- "pushed_at": "2013-06-18T02:54:11Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Amethyst/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}",
- "created_at": "2013-06-20T00:34:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/Amethyst/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Amethyst/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Amethyst/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Amethyst/merges",
- "mirror_url": null,
- "updated_at": "2013-06-20T00:34:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}",
- "description": "Tiling window manager for OS X.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Amethyst/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Amethyst/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Amethyst/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Amethyst/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Amethyst/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Amethyst/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Amethyst/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Amethyst/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Amethyst/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 3684286,
- "url": "https://api.github.com/repos/mralexgray/Animated-Paths",
- "fork": true,
- "name": "Animated-Paths",
- "size": 411,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Animated-Paths.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkzNjg0Mjg2",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Animated-Paths.git",
- "svn_url": "https://github.com/mralexgray/Animated-Paths",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/",
- "html_url": "https://github.com/mralexgray/Animated-Paths",
- "keys_url": "https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Animated-Paths.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/forks",
- "full_name": "mralexgray/Animated-Paths",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Animated-Paths/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}",
- "pushed_at": "2010-12-30T20:56:51Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Animated-Paths/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}",
- "created_at": "2012-03-11T02:56:38Z",
- "events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Animated-Paths/merges",
- "mirror_url": null,
- "updated_at": "2013-01-08T04:12:21Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}",
- "description": "Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Animated-Paths/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Animated-Paths/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/Animated-Paths/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Animated-Paths/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/Animated-Paths/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16662874,
- "url": "https://api.github.com/repos/mralexgray/AnsiLove.framework",
- "fork": true,
- "name": "AnsiLove.framework",
- "size": 3780,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AnsiLove.framework.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AnsiLove.framework.git",
- "svn_url": "https://github.com/mralexgray/AnsiLove.framework",
- "archived": false,
- "disabled": false,
- "has_wiki": false,
- "homepage": "http://byteproject.net",
- "html_url": "https://github.com/mralexgray/AnsiLove.framework",
- "keys_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}",
- "language": "M",
- "tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AnsiLove.framework.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/forks",
- "full_name": "mralexgray/AnsiLove.framework",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}",
- "pushed_at": "2013-10-04T14:08:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}",
- "created_at": "2014-02-09T08:30:27Z",
- "events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/merges",
- "mirror_url": null,
- "updated_at": "2015-01-13T20:41:46Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}",
- "description": "Cocoa Framework for rendering ANSi / ASCII art",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 5189563,
- "url": "https://api.github.com/repos/mralexgray/ANTrackBar",
- "fork": true,
- "name": "ANTrackBar",
- "size": 94,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/ANTrackBar.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnk1MTg5NTYz",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/ANTrackBar.git",
- "svn_url": "https://github.com/mralexgray/ANTrackBar",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "",
- "html_url": "https://github.com/mralexgray/ANTrackBar",
- "keys_url": "https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/tags",
- "watchers": 2,
- "blobs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/ANTrackBar.git",
- "forks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/forks",
- "full_name": "mralexgray/ANTrackBar",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/ANTrackBar/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}",
- "pushed_at": "2012-03-09T01:40:02Z",
- "teams_url": "https://api.github.com/repos/mralexgray/ANTrackBar/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}",
- "created_at": "2012-07-26T08:17:22Z",
- "events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/ANTrackBar/merges",
- "mirror_url": null,
- "updated_at": "2013-01-11T10:29:56Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}",
- "description": "An easy-to-use Cocoa seek bar with a pleasing appearance",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/ANTrackBar/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/ANTrackBar/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/stargazers",
- "watchers_count": 2,
- "deployments_url": "https://api.github.com/repos/mralexgray/ANTrackBar/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/ANTrackBar/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}",
- "stargazers_count": 2,
- "subscription_url": "https://api.github.com/repos/mralexgray/ANTrackBar/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 16240152,
- "url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C",
- "fork": true,
- "name": "AOP-in-Objective-C",
- "size": 340,
- "forks": 1,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/AOP-in-Objective-C.git",
- "license": null,
- "node_id": "MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/AOP-in-Objective-C.git",
- "svn_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": "http://innoli.hu/en/opensource/",
- "html_url": "https://github.com/mralexgray/AOP-in-Objective-C",
- "keys_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}",
- "language": "Objective-C",
- "tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/AOP-in-Objective-C.git",
- "forks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks",
- "full_name": "mralexgray/AOP-in-Objective-C",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}",
- "pushed_at": "2014-02-12T16:23:20Z",
- "teams_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}",
- "created_at": "2014-01-25T21:18:04Z",
- "events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges",
- "mirror_url": null,
- "updated_at": "2014-06-19T19:38:12Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}",
- "description": "An NSProxy based library for easily enabling AOP like functionality in Objective-C.",
- "forks_count": 1,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages",
- "default_branch": "travis-coveralls",
- "milestones_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 13141936,
- "url": "https://api.github.com/repos/mralexgray/Apaxy",
- "fork": true,
- "name": "Apaxy",
- "size": 113,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/Apaxy.git",
- "license": {
- "key": "unlicense",
- "url": "https://api.github.com/licenses/unlicense",
- "name": "The Unlicense",
- "node_id": "MDc6TGljZW5zZTE1",
- "spdx_id": "Unlicense"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/Apaxy.git",
- "svn_url": "https://github.com/mralexgray/Apaxy",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/Apaxy",
- "keys_url": "https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}",
- "language": "CSS",
- "tags_url": "https://api.github.com/repos/mralexgray/Apaxy/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/Apaxy.git",
- "forks_url": "https://api.github.com/repos/mralexgray/Apaxy/forks",
- "full_name": "mralexgray/Apaxy",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/Apaxy/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}",
- "pushed_at": "2013-08-02T16:01:32Z",
- "teams_url": "https://api.github.com/repos/mralexgray/Apaxy/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}",
- "created_at": "2013-09-27T05:05:35Z",
- "events_url": "https://api.github.com/repos/mralexgray/Apaxy/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/Apaxy/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/Apaxy/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/Apaxy/merges",
- "mirror_url": null,
- "updated_at": "2018-02-16T21:40:24Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}",
- "description": "A simple, customisable theme for your Apache directory listing.",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/Apaxy/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/Apaxy/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/Apaxy/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/Apaxy/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/Apaxy/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/Apaxy/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/Apaxy/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/Apaxy/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/Apaxy/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- },
- {
- "id": 20027360,
- "url": "https://api.github.com/repos/mralexgray/app",
- "fork": true,
- "name": "app",
- "size": 1890,
- "forks": 0,
- "owner": {
- "id": 262517,
- "url": "https://api.github.com/users/mralexgray",
- "type": "User",
- "login": "mralexgray",
- "node_id": "MDQ6VXNlcjI2MjUxNw==",
- "html_url": "https://github.com/mralexgray",
- "gists_url": "https://api.github.com/users/mralexgray/gists{/gist_id}",
- "repos_url": "https://api.github.com/users/mralexgray/repos",
- "avatar_url": "https://avatars.githubusercontent.com/u/262517?v=4",
- "events_url": "https://api.github.com/users/mralexgray/events{/privacy}",
- "site_admin": false,
- "gravatar_id": "",
- "starred_url": "https://api.github.com/users/mralexgray/starred{/owner}{/repo}",
- "followers_url": "https://api.github.com/users/mralexgray/followers",
- "following_url": "https://api.github.com/users/mralexgray/following{/other_user}",
- "organizations_url": "https://api.github.com/users/mralexgray/orgs",
- "subscriptions_url": "https://api.github.com/users/mralexgray/subscriptions",
- "received_events_url": "https://api.github.com/users/mralexgray/received_events"
- },
- "topics": [],
- "git_url": "git://github.com/mralexgray/app.git",
- "license": {
- "key": "other",
- "url": null,
- "name": "Other",
- "node_id": "MDc6TGljZW5zZTA=",
- "spdx_id": "NOASSERTION"
- },
- "node_id": "MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==",
- "private": false,
- "ssh_url": "git@github.com:mralexgray/app.git",
- "svn_url": "https://github.com/mralexgray/app",
- "archived": false,
- "disabled": false,
- "has_wiki": true,
- "homepage": null,
- "html_url": "https://github.com/mralexgray/app",
- "keys_url": "https://api.github.com/repos/mralexgray/app/keys{/key_id}",
- "language": "JavaScript",
- "tags_url": "https://api.github.com/repos/mralexgray/app/tags",
- "watchers": 0,
- "blobs_url": "https://api.github.com/repos/mralexgray/app/git/blobs{/sha}",
- "clone_url": "https://github.com/mralexgray/app.git",
- "forks_url": "https://api.github.com/repos/mralexgray/app/forks",
- "full_name": "mralexgray/app",
- "has_pages": false,
- "hooks_url": "https://api.github.com/repos/mralexgray/app/hooks",
- "pulls_url": "https://api.github.com/repos/mralexgray/app/pulls{/number}",
- "pushed_at": "2014-05-20T19:51:38Z",
- "teams_url": "https://api.github.com/repos/mralexgray/app/teams",
- "trees_url": "https://api.github.com/repos/mralexgray/app/git/trees{/sha}",
- "created_at": "2014-05-21T15:54:20Z",
- "events_url": "https://api.github.com/repos/mralexgray/app/events",
- "has_issues": false,
- "issues_url": "https://api.github.com/repos/mralexgray/app/issues{/number}",
- "labels_url": "https://api.github.com/repos/mralexgray/app/labels{/name}",
- "merges_url": "https://api.github.com/repos/mralexgray/app/merges",
- "mirror_url": null,
- "updated_at": "2014-05-21T15:54:22Z",
- "visibility": "public",
- "archive_url": "https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}",
- "commits_url": "https://api.github.com/repos/mralexgray/app/commits{/sha}",
- "compare_url": "https://api.github.com/repos/mralexgray/app/compare/{base}...{head}",
- "description": "Instant mobile web app creation",
- "forks_count": 0,
- "is_template": false,
- "open_issues": 0,
- "branches_url": "https://api.github.com/repos/mralexgray/app/branches{/branch}",
- "comments_url": "https://api.github.com/repos/mralexgray/app/comments{/number}",
- "contents_url": "https://api.github.com/repos/mralexgray/app/contents/{+path}",
- "git_refs_url": "https://api.github.com/repos/mralexgray/app/git/refs{/sha}",
- "git_tags_url": "https://api.github.com/repos/mralexgray/app/git/tags{/sha}",
- "has_projects": true,
- "releases_url": "https://api.github.com/repos/mralexgray/app/releases{/id}",
- "statuses_url": "https://api.github.com/repos/mralexgray/app/statuses/{sha}",
- "allow_forking": true,
- "assignees_url": "https://api.github.com/repos/mralexgray/app/assignees{/user}",
- "downloads_url": "https://api.github.com/repos/mralexgray/app/downloads",
- "has_downloads": true,
- "languages_url": "https://api.github.com/repos/mralexgray/app/languages",
- "default_branch": "master",
- "milestones_url": "https://api.github.com/repos/mralexgray/app/milestones{/number}",
- "stargazers_url": "https://api.github.com/repos/mralexgray/app/stargazers",
- "watchers_count": 0,
- "deployments_url": "https://api.github.com/repos/mralexgray/app/deployments",
- "git_commits_url": "https://api.github.com/repos/mralexgray/app/git/commits{/sha}",
- "subscribers_url": "https://api.github.com/repos/mralexgray/app/subscribers",
- "contributors_url": "https://api.github.com/repos/mralexgray/app/contributors",
- "issue_events_url": "https://api.github.com/repos/mralexgray/app/issues/events{/number}",
- "stargazers_count": 0,
- "subscription_url": "https://api.github.com/repos/mralexgray/app/subscription",
- "collaborators_url": "https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}",
- "issue_comment_url": "https://api.github.com/repos/mralexgray/app/issues/comments{/number}",
- "notifications_url": "https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}",
- "open_issues_count": 0,
- "web_commit_signoff_required": false
- }
- ],
- "trait1": "new-val"
- },
- "library": {
- "name": "http"
- }
- },
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "messageId": "c864b4cd-8f07-4922-b3d0-82ef04c987d3",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "receivedAt": "2022-08-18T08:43:13.521+05:30",
- "request_ip": "[::1]",
- "anonymousId": "anon-id-new",
- "originalTimestamp": "2022-08-18T08:43:15.539+05:30"
- },
- "PayloadSize": 95943,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "2DTlLPQxignYp4ag9sISgGN2uY7",
- "event_name": "",
- "event_type": "identify",
- "message_id": "c864b4cd-8f07-4922-b3d0-82ef04c987d3",
- "received_at": "2022-08-18T08:43:13.521+05:30",
- "workspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd",
- "transform_at": "router",
- "source_job_id": "",
- "destination_id": "2DTozIMGtBwTGNJtuvdPByFSL2Z",
- "gateway_job_id": 6,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "2DTlJaW1jHhM8B27Et2CMTZoxZF",
- "destination_definition_id": ""
- },
- "WorkspaceId": "2DTlBMipxWfJZzZ1SsjELQWvkwd"
- },
- "workerAssignedTime": "2022-08-18T08:43:16.586825+05:30"
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "payload size limit exceeded"
- }
-]
diff --git a/test/__tests__/data/launchdarkly_audience.json b/test/__tests__/data/launchdarkly_audience.json
deleted file mode 100644
index 2f348e01fa4..00000000000
--- a/test/__tests__/data/launchdarkly_audience.json
+++ /dev/null
@@ -1,495 +0,0 @@
-[
- {
- "description": "Unsupported event type",
- "input": {
- "message": {
- "userId": "user123",
- "type": "abc",
- "properties": {
- "listData": {
- "add": [
- {
- "identifier": "alex@email.com"
- },
- {
- "identifier": "ryan@email.com"
- },
- {
- "identifier": "van@email.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": {
- "error": "Event type abc is not supported. Aborting message."
- }
- },
- {
- "description": "List data is not passed",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {},
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": {
- "error": "`listData` is not present inside properties. Aborting message."
- }
- },
- {
- "description": "List data is empty",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {}
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": {
- "error": "`listData` is empty. Aborting message."
- }
- },
- {
- "description": "List data is empty",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "identifier": ""
- },
- {
- "identifier": ""
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": {
- "error": "`listData` is empty. Aborting message."
- }
- },
- {
- "description": "Unsupported action type",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "update": [
- {
- "identifier": "alex@email.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": {
- "error": "Unsupported action type. Aborting message."
- }
- },
- {
- "description": "Add members to the audience list",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "identifier": "alex@email.com"
- },
- {
- "identifier": "ryan@email.com"
- },
- {
- "identifier": "van@email.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "add": [
- {
- "id": "alex@email.com"
- },
- {
- "id": "ryan@email.com"
- }
- ],
- "remove": []
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "add": [
- {
- "id": "van@email.com"
- }
- ],
- "remove": []
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Remove members from the audience list",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "identifier": "alex@email.com"
- },
- {
- "identifier": "ryan@email.com"
- },
- {
- "identifier": "van@email.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "remove": [
- {
- "id": "alex@email.com"
- },
- {
- "id": "ryan@email.com"
- }
- ],
- "add": []
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "remove": [
- {
- "id": "van@email.com"
- }
- ],
- "add": []
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Add/Remove members",
- "input": {
- "message": {
- "userId": "user123",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "identifier": "alex@email.com"
- },
- {
- "userId": "user1"
- }
- ],
- "remove": [
- {
- "identifier": "ryan@email.com"
- },
- {
- "identifier": "van@email.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "Config": {
- "audienceId": "test-audienceId",
- "audienceName": "test-audienceName",
- "accessToken": "test-accessToken",
- "clientSideId": "test-clientSideId"
- }
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "add": [
- {
- "id": "alex@email.com"
- }
- ],
- "remove": [
- {
- "id": "ryan@email.com"
- }
- ]
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://app.launchdarkly.com/api/v2/segment-targets/rudderstack",
- "headers": {
- "Authorization": "test-accessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "environmentId": "test-clientSideId",
- "cohortId": "test-audienceId",
- "cohortName": "test-audienceName",
- "listData": {
- "add": [],
- "remove": [
- {
- "id": "van@email.com"
- }
- ]
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- }
-]
diff --git a/test/__tests__/data/leanplum_input.json b/test/__tests__/data/leanplum_input.json
deleted file mode 100644
index d1a3741083f..00000000000
--- a/test/__tests__/data/leanplum_input.json
+++ /dev/null
@@ -1,924 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id2",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id3",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id3",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "page",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "name": "Test Page Name",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id3",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "page",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id4",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id5",
- "properties": {
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "integrations": {
- "All": true
- },
- "messageId": "id6",
- "properties": {
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "id": "some_developer_id",
- "createAt": "2019-10-14T09:03:17.562Z",
- "address": {
- "country": "USA",
- "city": "NY"
- },
- "country": "India",
- "city": "Delhi"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "account: logged out",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "account: logged out",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "MainActivity",
- "automatic": true,
- "total": 2.45,
- "currency": "USD"
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- }
-]
diff --git a/test/__tests__/data/leanplum_output.json b/test/__tests__/data/leanplum_output.json
deleted file mode 100644
index 8de34e5c8f4..00000000000
--- a/test/__tests__/data/leanplum_output.json
+++ /dev/null
@@ -1,703 +0,0 @@
-[
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "Test Page Name",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- {
- "statusCode": 400,
- "error": "Missing required value from [\"properties.name\",\"event\"]"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "setUserAttributes" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "00000000000000000000000000",
- "newUserId": "some_developer_id",
- "userAttributes": {
- "id": "some_developer_id",
- "createAt": "2019-10-14T09:03:17.562Z",
- "address": { "country": "USA", "city": "NY" },
- "country": "India",
- "city": "Delhi"
- },
- "created": 1571043798,
- "locale": "en-US",
- "country": "USA",
- "city": "NY",
- "time": 1571043798,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "advance" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- {
- "statusCode": 400,
- "error": "Missing required value from [\"properties.name\",\"event\"]"
- },
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "track" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "event": "account: logged out",
- "deviceId": "5094f5704b9cf2b3",
- "params": { "name": "MainActivity", "automatic": true },
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "start" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": { "anonymousId": "5094f5704b9cf2b3" },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": { "Content-Type": "application/json" },
- "params": { "action": "track" },
- "body": {
- "JSON": {
- "apiVersion": "1.0.6",
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "userId": "5094f5704b9cf2b3",
- "event": "account: logged out",
- "deviceId": "5094f5704b9cf2b3",
- "params": {
- "name": "MainActivity",
- "automatic": true,
- "total": 2.45,
- "currency": "USD"
- },
- "value": 2.45,
- "currencyCode": "USD",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ]
-]
diff --git a/test/__tests__/data/leanplum_router_input.json b/test/__tests__/data/leanplum_router_input.json
deleted file mode 100644
index ba36628209d..00000000000
--- a/test/__tests__/data/leanplum_router_input.json
+++ /dev/null
@@ -1,142 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "message": {
- "anonymousId": "5094f5704b9cf2b3",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "LeanPlumIntegrationAndroid",
- "namespace": "com.android.SampleLeanPlum",
- "version": "1.0"
- },
- "device": {
- "id": "5094f5704b9cf2b3",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "MainActivity",
- "integrations": {
- "All": true
- },
- "messageId": "id2",
- "properties": {
- "name": "MainActivity",
- "automatic": true
- },
- "originalTimestamp": "2020-03-12T09:05:03.421Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:13.042Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- }
-]
diff --git a/test/__tests__/data/leanplum_router_output.json b/test/__tests__/data/leanplum_router_output.json
deleted file mode 100644
index e32c53cf835..00000000000
--- a/test/__tests__/data/leanplum_router_output.json
+++ /dev/null
@@ -1,176 +0,0 @@
-[
- {
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {
- "action": "start"
- },
- "body": {
- "JSON": {
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "apiVersion": "1.0.6",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {
- "action": "advance"
- },
- "body": {
- "JSON": {
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "apiVersion": "1.0.6",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- },
- {
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {
- "action": "start"
- },
- "body": {
- "JSON": {
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "apiVersion": "1.0.6",
- "userId": "5094f5704b9cf2b3",
- "deviceId": "5094f5704b9cf2b3",
- "appVersion": "1.0",
- "systemName": "Android",
- "systemVersion": "8.1.0",
- "deviceName": "generic_x86",
- "deviceModel": "Android SDK built for x86",
- "userAttributes": {
- "anonymousId": "5094f5704b9cf2b3"
- },
- "locale": "en-US",
- "timezone": "Asia/Kolkata",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.leanplum.com/api",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {
- "action": "advance"
- },
- "body": {
- "JSON": {
- "appId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "apiVersion": "1.0.6",
- "userId": "5094f5704b9cf2b3",
- "state": "MainActivity",
- "deviceId": "5094f5704b9cf2b3",
- "time": 1584003903,
- "devMode": true
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "5094f5704b9cf2b3"
- }
- ],
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "applicationId": "leanplum_application_id",
- "clientKey": "leanplum_client_key__",
- "isDevelop": true,
- "useNativeSDK": false,
- "sendEvents": false
- }
- }
- }
-]
diff --git a/test/__tests__/data/lemnisk.json b/test/__tests__/data/lemnisk.json
deleted file mode 100644
index 3dc295da588..00000000000
--- a/test/__tests__/data/lemnisk.json
+++ /dev/null
@@ -1,983 +0,0 @@
-[
- {
- "description": "Error: Event Type is required ",
- "input": {
- "message": {
- "userId": "user123",
- "event": "Product Reviewed",
- "properties": {
- "review_body": "Average product, expected much more."
- },
- "context": {
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "messageId": "1578564113557-af022c68-429e-4af4-b99b-2b9174056383"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "error": "Event type is required"
- }
- },
- {
- "description": "Error: Pl Track: Invalid Configuration",
- "input": {
- "message": {
- "type": "track",
- "properties": {
- "product_id": "ab1234",
- "rating": 3,
- "review_body": "Average product, expected much more.",
- "review_id": "12345"
- },
- "event": "Product Reviewed",
- "context": {
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "2.9.1"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "messageId": "1578564113557-af022c68-429e-4af4-b99b-2b9174056383"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "error": "Configuration for Web Mode requires write key and region url"
- }
- },
- {
- "description": "Error: Invalid Configs for Diapi",
- "input": {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "traits": {
- "firstName": "test",
- "lastName": "rudderlabs",
- "role": "Manager",
- "address": "Flat No 58 ABC building XYZ Area near PQRS , 354408",
- "hasPurchased": "yes",
- "email": "abc@xyz.com",
- "title": "Mr",
- "phone": "9876543212",
- "state": "Uttar Pradesh",
- "zipcode": "243001",
- "prospectOrCustomer": "Prospect",
- "country": "India",
- "website": "abc.com",
- "subscriptionStatus": "New"
- }
- },
- "messageId": "25ea6605-c788-4cab-8fed-2cf0b831c4a8",
- "originalTimestamp": "2020-02-02T00:23:09.544Z",
- "receivedAt": "2022-08-17T10:40:21.162+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2022-08-17T10:40:21.728+05:30",
- "timestamp": "2020-02-02T05:53:08.977+05:30",
- "type": "track",
- "userId": "identified user id"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "",
- "pl": "",
- "passKey": "1234",
- "apiKey": "",
- "diapi": "https://crux.lemnisk.co/v3/data",
- "cloudMode": "server",
- "srcId": "1",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "error": "Configuration for Server Mode requires Api key, Pass Key and region url"
- }
- },
- {
- "description": "Diapi Platform: Track Call",
- "input": {
- "message": {
- "type": "track",
- "properties": {
- "product_id": "ab1234",
- "rating": 3,
- "review_body": "Average product, expected much more.",
- "review_id": "12345"
- },
- "event": "Product Reviewed",
- "context": {
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "2.9.1"
- },
- "traits": {
- "email": "a@example.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "messageId": "1578564113557-af022c68-429e-4af4-b99b-2b9174056383",
- "userId": "user123"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "",
- "pl": "",
- "passKey": "1234",
- "apiKey": "abcd",
- "diapi": "https://crux.lemnisk.co/v3/data",
- "cloudMode": "server",
- "srcId": "1",
- "diapiWriteKey": "diapi_write_key"
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://crux.lemnisk.co/v3/data",
- "headers": {
- "Content-Type": "application/json",
- "x-api-passKey": "1234",
- "x-api-key": "abcd"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "track",
- "properties": {
- "product_id": "ab1234",
- "rating": 3,
- "review_body": "Average product, expected much more.",
- "review_id": "12345"
- },
- "WriteKey": "diapi_write_key",
- "eventname": "Product Reviewed",
- "userId": "user123",
- "email": "a@example.com",
- "srcid": "1"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "user123"
- }
- },
- {
- "description": "Error: Message type not supported",
- "input": {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "traits": {
- "state": "uttar pradesh"
- }
- },
- "messageId": "25ea6605-c788-4cab-8fed-2cf0b831c4a8",
- "originalTimestamp": "2020-02-02T00:23:09.544Z",
- "receivedAt": "2022-08-17T10:40:21.162+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2022-08-17T10:40:21.728+05:30",
- "timestamp": "2020-02-02T05:53:08.977+05:30",
- "userId": "identified user id",
- "type": "Alias"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "error": "Event type alias is not supported in Web Cloud Mode"
- }
- },
- {
- "description": " Page Call -> pl Platform ",
- "input": {
- "message": {
- "anonymousId": "anon-id-new",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "name": "Home",
- "category": "Profile",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "page"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://10.11.36.17:8080/analyze/analyze.php",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "page",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": {
- "ua": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- }
- },
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "name": "Home",
- "id": "anon-id-new",
- "userId": "anon-id-new",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "writeKey": "pl_writeKey"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "anon-id-new"
- }
- },
- {
- "description": " Identify Call -> pl Platform ",
- "input": {
- "message": {
- "anonymousId": "anon-id-new",
- "channel": "mobile",
- "context": {
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "event": "Visited Home",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "traits": {
- "name": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "identify"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://10.11.36.17:8080/analyze/analyze.php",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "identify",
- "context": {
- "userAgent": {
- "ua": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- }
- },
- "customerProperties": {
- "name": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "id": "anon-id-new",
- "userId": "anon-id-new",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "writeKey": "pl_writeKey"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "anon-id-new"
- }
- },
- {
- "description": " Track Call -> pl Platform ",
- "input": {
- "message": {
- "anonymousId": "anon-id-new",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "event": "Visited Home",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "track"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://10.11.36.17:8080/analyze/analyze.php",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "track",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": {
- "ua": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- }
- },
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "event": "Visited Home",
- "id": "anon-id-new",
- "userId": "anon-id-new",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "writeKey": "pl_writeKey"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "anon-id-new"
- }
- }
-]
diff --git a/test/__tests__/data/lemnisk_router.json b/test/__tests__/data/lemnisk_router.json
deleted file mode 100644
index 8599a364451..00000000000
--- a/test/__tests__/data/lemnisk_router.json
+++ /dev/null
@@ -1,639 +0,0 @@
-[
- {
- "description": "Lemnisk batch events",
- "input": [
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "type": "identify"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "",
- "pl": "https://crux.lemnisk.co/v2/data",
- "passKey": "",
- "apiKey": "",
- "diapi": " ",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": {
- "jobId": 1
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "channel": "mobile",
- "context": {
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "event": "Visited Home",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "traits": {
- "name": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "identify"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": {
- "anonymousId": "12345",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "DISCORD",
- "jobId": 123,
- "messageId": "4aaecff2-a513-4bbf-9824-c471f4ac9777",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "event": "Visited Home",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "track"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "DISCORD",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ],
- "output": [
- {
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "",
- "pl": "https://crux.lemnisk.co/v2/data",
- "passKey": "",
- "apiKey": "",
- "diapi": " ",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration"
- },
- "batched": false,
- "statusCode": 400,
- "error": "Configuration for Web Mode requires write key and region url"
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://10.11.36.17:8080/analyze/analyze.php",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "identify",
- "context": {
- "userAgent": {
- "ua": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- }
- },
- "customerProperties": {
- "name": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "id": "anon-id-new",
- "userId": "anon-id-new",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "writeKey": "pl_writeKey"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "anon-id-new"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": [
- {
- "anonymousId": "12345",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "DISCORD",
- "jobId": 123,
- "messageId": "4aaecff2-a513-4bbf-9824-c471f4ac9777",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- ],
- "batched": false,
- "statusCode": 200
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://10.11.36.17:8080/analyze/analyze.php",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "type": "track",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": {
- "ua": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- }
- },
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "event": "Visited Home",
- "id": "anon-id-new",
- "userId": "anon-id-new",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-29T14:50:29.907+05:30",
- "writeKey": "pl_writeKey"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "anon-id-new"
- },
- "destination": {
- "id": "2JAdls99p6UxoFNSKGwvh0aIt7E",
- "name": "Lemnisk Marketing Automation",
- "enabled": true,
- "Config": {
- "plWriteKey": "pl_writeKey",
- "pl": "http://10.11.36.17:8080/analyze/analyze.php",
- "passKey": "",
- "apiKey": "",
- "diapi": "",
- "cloudMode": "web",
- "srcId": "",
- "diapiWriteKey": ""
- },
- "destinationDefinition": {
- "config": {
- "transformAt": "processor",
- "transformAtV1": "processor",
- "saveDestinationResponse": true,
- "includeKeys": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "srcId"
- ],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova",
- "warehouse"
- ],
- "supportedMessageTypes": ["track", "identify", "page"],
- "destConfig": {
- "defaultConfig": [
- "apiKey",
- "passKey",
- "cloudMode",
- "diapi",
- "pl",
- "diapiWriteKey",
- "plWriteKey",
- "deviceModeWriteKey",
- "srcId"
- ]
- },
- "secretKeys": ["apiKey", "passKey", "plWriteKey", "diapiWriteKey"]
- },
- "responseRules": null,
- "id": "1j9dYVEplxUC5swbXkpK9fYT7uk",
- "name": "LEMNISK_MARKETING_AUTOMATION",
- "displayName": "Lemnisk Marketing Automation",
- "createdAt": "2022-12-12T21:58:08.637Z"
- },
- "rootStore": null,
- "isProcessorEnabled": true
- },
- "metadata": [
- {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "DISCORD",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- ],
- "batched": false,
- "statusCode": 200
- }
- ]
- }
-]
diff --git a/test/__tests__/data/lytics_cdk_output.json b/test/__tests__/data/lytics_cdk_output.json
deleted file mode 100644
index ee8d3e72543..00000000000
--- a/test/__tests__/data/lytics_cdk_output.json
+++ /dev/null
@@ -1,342 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "_e": "Order Completed",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "message Type is not present. Aborting message."
- },
- {
- "statusCode": 400,
- "error": "message type gone is not supported"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "_e": "Order Completed",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "ApplicationLoaded",
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "ApplicationLoaded",
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise",
- "first_name": "Rudderstack",
- "last_name": "Test"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/lytics_input.json b/test/__tests__/data/lytics_input.json
deleted file mode 100644
index 4ea3001e2e9..00000000000
--- a/test/__tests__/data/lytics_input.json
+++ /dev/null
@@ -1,948 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "timestamp": "2020-10-16T08:10:12.782Z",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "device": {
- "id": "7e32188a4dab669f",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "token": "desuhere",
- "type": "android"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "531e3507-1ef5-4a06-b83c-cb521ff34f0c",
- "originalTimestamp": "2020-10-16T08:53:29.386Z",
- "receivedAt": "2020-10-16T14:23:29.402+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:53:29.387Z",
- "timestamp": "2020-10-16T14:23:29.401+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "a61357dd-e29e-4033-b1af-029625947fec",
- "originalTimestamp": "2020-10-16T09:05:11.001Z",
- "receivedAt": "2020-10-16T14:35:11.014+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:05:11.002Z",
- "timestamp": "2020-10-16T14:35:11.013+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "gone",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testhubspot2@email.com",
- "name": "Test Hubspot",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "screen",
- "messageId": "e8585d9a-7137-4223-b295-68ab1b17dad7",
- "originalTimestamp": "2019-10-15T09:35:31.289Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z",
- "destination_props": {
- "AF": {
- "af_uid": "afUid"
- }
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testhubspot2@email.com",
- "name": "Test Hubspot",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "e8585d9a-7137-4223-b295-68ab1b17dad7",
- "originalTimestamp": "2019-10-15T09:35:31.289Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z",
- "destination_props": {
- "AF": {
- "af_uid": "afUid"
- }
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise",
- "firstName": "Rudderstack",
- "lastname": "Test"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/lytics_output.json b/test/__tests__/data/lytics_output.json
deleted file mode 100644
index 8a1949bbb4c..00000000000
--- a/test/__tests__/data/lytics_output.json
+++ /dev/null
@@ -1,342 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "_e": "Order Completed",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "\"type\" is a required field and it must be a string"
- },
- {
- "statusCode": 400,
- "error": "message type \"gone\" not supported for \"lytics\""
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "_e": "Order Completed",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "ApplicationLoaded",
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "ApplicationLoaded",
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise",
- "first_name": "Rudderstack",
- "last_name": "Test"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/lytics_router_input.json b/test/__tests__/data/lytics_router_input.json
deleted file mode 100644
index 425a7b1e3e8..00000000000
--- a/test/__tests__/data/lytics_router_input.json
+++ /dev/null
@@ -1,194 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "timestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "type": "track",
- "userId": "rudder123"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/lytics_router_output.json b/test/__tests__/data/lytics_router_output.json
deleted file mode 100644
index 2ac41bea00f..00000000000
--- a/test/__tests__/data/lytics_router_output.json
+++ /dev/null
@@ -1,131 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "_e": "Order Completed",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.lytics.io/collect/json/default?access_token=dummyApiKey",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "user_id": "rudder123",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "stream": "default"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_batch_input.json b/test/__tests__/data/mailchimp_batch_input.json
deleted file mode 100644
index ea382b1d89a..00000000000
--- a/test/__tests__/data/mailchimp_batch_input.json
+++ /dev/null
@@ -1,225 +0,0 @@
-[
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "mappedToDestination": true,
- "externalId": [
- {
- "identifierType": "email_address",
- "id": "bob.dole@initech.com",
- "type": "audience"
- }
- ],
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "traits": {
- "merge_fields": {
- "FIRSTNAME": "Bob"
- },
- "status": "subscribed"
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 3
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "subscribed"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 4
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "subscribed"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 5
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "subscrib"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_batch_output.json b/test/__tests__/data/mailchimp_batch_output.json
deleted file mode 100644
index fac07b6a460..00000000000
--- a/test/__tests__/data/mailchimp_batch_output.json
+++ /dev/null
@@ -1,100 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://us20.api.mailchimp.com/3.0/lists/1232yyqw22?skip_merge_validation=false&skip_duplicate_check=false",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmFwaUtleS1kdW1teUFwaUtleQ=="
- },
- "params": {},
- "body": {
- "JSON": {
- "members": [
- {
- "merge_fields": {
- "FIRSTNAME": "Bob"
- },
- "status": "subscribed",
- "email_address": "bob.dole@initech.com"
- },
- {
- "status": "subscribed",
- "email_address": "emrichardson820+22822@gmail.com"
- },
- {
- "status": "subscribed",
- "email_address": "emrichardson820+22822@gmail.com"
- }
- ],
- "update_existing": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- },
- {
- "jobId": 3
- },
- {
- "jobId": 4
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "1232yyqw22",
- "datacenterId": "us20"
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": [
- {
- "jobId": 5
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_input.json b/test/__tests__/data/mailchimp_input.json
deleted file mode 100644
index 20b7ba0fc01..00000000000
--- a/test/__tests__/data/mailchimp_input.json
+++ /dev/null
@@ -1,1299 +0,0 @@
-[
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com",
- "firstName": "Bob",
- "lastName": "Dole",
- "zip": "123",
- "state": "test",
- "city": "test",
- "addressLine1": "test",
- "birthday": "2000-05-06"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "MailChimp": {
- "subscriptionStatus": "subscribed"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "Titli Test",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-05-18T06:58:57.186Z",
- "userId": "test.rudderlabs@yara.com",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://app.rudderstack.com/sources/1qHR2Qzd894ievNGc4aBHmjltLD",
- "path": "/sources/1qHR2Qzd894ievNGc4aBHmjltLD",
- "title": "RudderStack",
- "search": "",
- "tab_url": "https://app.rudderstack.com/sources/1qHR2Qzd894ievNGc4aBHmjltLD",
- "referrer": "$direct",
- "initial_referrer": "https://www.google.com/",
- "referring_domain": "",
- "initial_referring_domain": "www.google.com"
- },
- "locale": "en-US",
- "screen": {
- "width": 1792,
- "height": 1120,
- "density": 2
- },
- "traits": {
- "name": "test rudderlabs",
- "email": "test.rudderlabs@yara.com",
- "userId": "1sWVaQTxoVwjvShC0295E6OqMaP",
- "first_login": false,
- "workspaceId": "1jWrHYPjNGSHbvKwzow0ZFPIQll",
- "account_type": "invited"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
- },
- "rudderId": "6d612dda-9c8c-4062-9d09-af9425b846ce",
- "messageId": "c6d49688-89f2-45cf-b061-0ae3c212a4e5",
- "timestamp": "2021-05-18T06:58:57.811Z",
- "receivedAt": "2021-05-18T06:58:57.812Z",
- "request_ip": "122.172.221.51",
- "anonymousId": "6914679f-fd34-45ef-86e0-4930e6e8b91a",
- "integrations": {
- "Salesforce": true
- },
- "originalTimestamp": "2021-05-18T06:58:57.185Z"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "Titli Test",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "type": "page",
- "sentAt": "2021-05-18T07:02:17.675Z",
- "userId": "",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://app.rudderstack.com/signup?type=freetrial",
- "path": "/signup",
- "title": "",
- "search": "?type=freetrial",
- "tab_url": "https://app.rudderstack.com/signup?type=freetrial",
- "referrer": "https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e",
- "initial_referrer": "https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e",
- "referring_domain": "rudderstack.medium.com",
- "initial_referring_domain": "rudderstack.medium.com"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
- },
- "rudderId": "4dbe224c-6aea-4d89-8da6-09d27c0d2908",
- "messageId": "72df8cb0-54ab-417c-8e87-e97e9d339feb",
- "timestamp": "2021-05-18T07:02:18.566Z",
- "properties": {
- "url": "https://app.rudderstack.com/signup?type=freetrial",
- "path": "/signup",
- "title": "",
- "search": "?type=freetrial",
- "tab_url": "https://app.rudderstack.com/signup?type=freetrial",
- "referrer": "https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e",
- "initial_referrer": "https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e",
- "referring_domain": "rudderstack.medium.com",
- "initial_referring_domain": "rudderstack.medium.com"
- },
- "receivedAt": "2021-05-18T07:02:18.566Z",
- "request_ip": "162.44.150.11",
- "anonymousId": "58ec7b39-48f1-4d83-9d45-a48c64f96fa0",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-05-18T07:02:17.675Z"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "mappedToDestination": true,
- "externalId": [
- {
- "identifierType": "email_address",
- "id": "bob.dole@initech.com",
- "type": "audience"
- }
- ],
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "traits": {
- "merge_fields": {
- "FIRSTNAME": "Bob"
- },
- "status": "subscribed"
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "subscri"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud112",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "jhon@gmail.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "bob.dole@initech.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "MailChimp": {
- "subscriptionStatus": "subscribed"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "test-rudderlabs",
- "email": "test-rudderlabs-test@initech.com",
- "firstName": "Test",
- "lastName": "Rudderlabs"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "test-rudderlabs",
- "email": "test-rudderlabs-test@initech.com",
- "firstName": "Test",
- "lastName": "Rudderlabs"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": ""
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "test-rudderlabs",
- "email": "test-rudderlabs-test@initech.com",
- "firstName": "Test",
- "lastName": "Rudderlabs"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "test-rudderlabs",
- "email": "test-rudderlabs-test@initech.com",
- "firstName": "Test",
- "lastName": "Rudderlabs"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "group",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments"
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false,
- "products": [
- {
- "product_id": "123",
- "price": "14"
- },
- {
- "product_id": "123",
- "price": 14
- }
- ],
- "purchased": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false,
- "products": [
- {
- "product_id": "123",
- "price": "14"
- },
- {
- "product_id": "123",
- "price": 14
- }
- ],
- "purchased": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": 22,
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false,
- "products": [
- {
- "product_id": "123",
- "price": "14"
- },
- {
- "product_id": "123",
- "price": 14
- }
- ],
- "purchased": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "E",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false,
- "products": [
- {
- "product_id": "123",
- "price": "14"
- },
- {
- "product_id": "123",
- "price": 14
- }
- ],
- "purchased": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "Event Name more than 30 characters abcdefghijklmno",
- "userId": "userId12345"
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_output.json b/test/__tests__/data/mailchimp_output.json
deleted file mode 100644
index e1a8384242a..00000000000
--- a/test/__tests__/data/mailchimp_output.json
+++ /dev/null
@@ -1,498 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "merge_fields": {
- "ADDRESS": {
- "addr1": "test",
- "city": "test",
- "state": "test",
- "zip": "123"
- },
- "FNAME": "Bob",
- "LNAME": "Dole",
- "ANONYMOUSI": "userId12345",
- "BIRTHDAY": "05/06"
- },
- "email_address": "bob.dole@initech.com",
- "status": "subscribed"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "status": "subscribed",
- "email_address": "bob.dole@initech.com",
- "merge_fields": {
- "ANONYMOUSI": "userId12345"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "error": "User does not have access to the requested operation",
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "Titli Test",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey-dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "Titli Test",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apiKey",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "message type page is not supported"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "merge_fields": {
- "FIRSTNAME": "Bob"
- },
- "status": "subscribed",
- "email_address": "bob.dole@initech.com"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "94f71917d8522770c97449b0c90caa4c-usXX",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "ff21810ddc",
- "datacenterId": "us14"
- },
- "Enabled": true,
- "Transformations": []
- },
- "statusCode": 400,
- "error": "Email is required for identify",
- "statTags": {
- "destination": "mailchimp",
- "stage": "transform",
- "scope": "exception"
- }
- },
- {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "status": "subscribed",
- "email_address": "jhon@gmail.com"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "audienceId": "aud112",
- "version": "1",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud112/members/7f3863b197eeff650876bb89eca08e57"
- },
- {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "email_address": "bob.dole@initech.com",
- "status": "subscribed"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "audienceId": "aud111",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "status": "subscribed",
- "email_address": "bob.dole@initech.com"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "API Key not found. Aborting"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "awesrdcfgvhbjnkkjhgf",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "Audience Id not found. Aborting"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "aud111",
- "datacenterId": ""
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "DataCenter Id not found. Aborting"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "zesrxdthfcjg345yruikyhntbgrafvd",
- "audienceId": "aud111",
- "datacenterId": "usXX"
- },
- "Enabled": true,
- "Transformations": []
- },
- "error": "message type group is not supported"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "properties": {
- "brand": "Aster",
- "product": "Garments"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "is_syncing": false,
- "properties": {
- "brand": "Aster",
- "product": "Garments"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "error": "Email is required for track"
- },
- {
- "error": "Missing required value from \"event\""
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "is_syncing": false,
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "products": "[{\"product_id\":\"123\",\"price\":\"14\"},{\"product_id\":\"123\",\"price\":14}]",
- "purchased": "false"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "22",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "is_syncing": false,
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "products": "[{\"product_id\":\"123\",\"price\":\"14\"},{\"product_id\":\"123\",\"price\":14}]",
- "purchased": "false"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "ff21810ddc",
- "datacenterId": "us14"
- },
- "Enabled": true,
- "Transformations": []
- },
- "statusCode": 400,
- "error": "Event name should be between 2 and 30 characters",
- "statTags": {
- "destination": "mailchimp",
- "stage": "transform",
- "scope": "exception"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "audienceId": "ff21810ddc",
- "datacenterId": "us14"
- },
- "Enabled": true,
- "Transformations": []
- },
- "statusCode": 400,
- "error": "Event name should be between 2 and 30 characters",
- "statTags": {
- "destination": "mailchimp",
- "stage": "transform",
- "scope": "exception"
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_router_input.json b/test/__tests__/data/mailchimp_router_input.json
deleted file mode 100644
index e3cdbdddf5c..00000000000
--- a/test/__tests__/data/mailchimp_router_input.json
+++ /dev/null
@@ -1,347 +0,0 @@
-[
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com",
- "firstName": "Bob",
- "lastName": "Dole"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "21e475b2-3694-477b-afb6-5b94a81aac21",
- "originalTimestamp": "2019-11-15T10:22:32Z",
- "receivedAt": "2019-11-15T15:52:37+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:22:37Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:52:32+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 3
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "MailChimp": {
- "subscriptionStatus": "subscribed"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 4
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
- },
- "integrations": {
- "MailChimp": {
- "subscriptionStatus": "subscrib"
- }
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "request_ip": "[::1]:62921",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "identify",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 5
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments"
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 6
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "is_syncing": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "userId": "userId12345"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": {
- "jobId": 7
- },
- "message": {
- "anonymousId": "userId12345",
- "channel": "web",
- "context": {
- "traits": {
- "anonymousId": "userId12345",
- "email": "bob.dole@initech.com"
- }
- },
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "isSyncing": false,
- "products": [
- {
- "product_id": "123",
- "price": "14"
- },
- {
- "product_id": "123",
- "price": 14
- }
- ],
- "purchased": false
- },
- "messageId": "6d1f3ca8-e2d0-4d34-9926-44596171af0c",
- "originalTimestamp": "2019-11-15T10:26:53Z",
- "receivedAt": "2019-11-15T15:56:58+05:30",
- "sentAt": "2019-11-15T10:26:58Z",
- "source_id": "1TdhTcwsUVOeEMWyPUpQIgF3pYr",
- "timestamp": "2019-11-15T15:56:53+05:30",
- "type": "track",
- "event": "local testing",
- "userId": "userId12345"
- }
- }
-]
diff --git a/test/__tests__/data/mailchimp_router_output.json b/test/__tests__/data/mailchimp_router_output.json
deleted file mode 100644
index 3a3eec40a93..00000000000
--- a/test/__tests__/data/mailchimp_router_output.json
+++ /dev/null
@@ -1,238 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111?skip_merge_validation=true&skip_duplicate_check=false",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmFwaWtleQ=="
- },
- "params": {},
- "body": {
- "JSON": {
- "members": [
- {
- "email_address": "bob.dole@initech.com",
- "merge_fields": {
- "FNAME": "Bob",
- "LNAME": "Dole",
- "ANONYMOUSI": "userId12345"
- },
- "status": "subscribed"
- },
- {
- "email_address": "bob.dole@initech.com",
- "merge_fields": {
- "ANONYMOUSI": "userId12345"
- },
- "status": "subscribed"
- }
- ],
- "update_existing": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- },
- {
- "jobId": 3
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmFwaWtleQ=="
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "properties": {
- "brand": "Aster",
- "product": "Garments"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- "metadata": [
- {
- "jobId": 5
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YXBpS2V5OmFwaWtleQ=="
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "local_testing",
- "occurred_at": "2019-11-15T10:26:53+00:00",
- "is_syncing": false,
- "properties": {
- "brand": "Aster",
- "product": "Garments",
- "products": "[{\"product_id\":\"123\",\"price\":\"14\"},{\"product_id\":\"123\",\"price\":14}]",
- "purchased": "false"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "audienceId": "aud111"
- },
- "metadata": [
- {
- "jobId": 7
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": [
- {
- "jobId": 6
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "Missing required value from \"event\"",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "destination": {
- "ID": "1Tdi0lpXwSVwXG1lcdP2pXHKrJ6",
- "Name": "test-mc",
- "DestinationDefinition": {
- "ID": "1SujZGrVEPqYmpUJcV4vSl9tfxn",
- "Name": "MC",
- "DisplayName": "MailChimp"
- },
- "Config": {
- "apiKey": "apikey",
- "audienceId": "aud111",
- "datacenterId": "usXX",
- "enableMergeFields": true
- },
- "Enabled": true,
- "Transformations": []
- },
- "metadata": [
- {
- "jobId": 4
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- }
-]
diff --git a/test/__tests__/data/mailjet.json b/test/__tests__/data/mailjet.json
deleted file mode 100644
index 86e49f924d1..00000000000
--- a/test/__tests__/data/mailjet.json
+++ /dev/null
@@ -1,145 +0,0 @@
-[
- {
- "description": "No Message type",
- "input": {
- "message": {
- "userId": "test@123",
- "context": {
- "traits": {
- "email": "test@rudderstack.com",
- "username": "Samle_putUserName",
- "firstName": "uday"
- }
- },
- "integrations": {
- "All": true,
- "user.com": {
- "lookup": "email"
- }
- }
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret"
- }
- }
- },
- "output": {
- "error": "Event type is required"
- }
- },
- {
- "description": "Unsupported Type",
- "input": {
- "message": {
- "userId": "test@123",
- "type": "trackUser",
- "context": {
- "traits": {
- "email": "test@rudderstack.com",
- "firstName": "test",
- "lastName": "rudderstack",
- "age": 15,
- "gender": "male",
- "status": "user",
- "city": "Kalkata",
- "country": "india",
- "tags": ["productuser"],
- "phone": "9225467887"
- }
- }
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret"
- }
- }
- },
- "output": {
- "error": "Event type \"trackuser\" is not supported"
- }
- },
- {
- "description": "MailJet identify call without an email",
- "input": {
- "message": {
- "userId": "test@123",
- "type": "identify",
- "context": {
- "traits": {
- "firstName": "test",
- "lastName": "rudderstack",
- "age": 15,
- "gender": "male",
- "status": "user",
- "city": "Kalkata",
- "country": "india",
- "tags": ["productuser"],
- "phone": "9225467887"
- }
- }
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret"
- }
- }
- },
- "output": {
- "error": "Missing required value from \"email\""
- }
- },
- {
- "description": "Mailjet identify call without batching",
- "input": {
- "message": {
- "userId": "user@45",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- }
- }
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "email": "test@user.com",
- "properties": { "country": "india" }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "listId": "58578",
- "action": "addnoforce"
- }
- }
-]
diff --git a/test/__tests__/data/mailjet_batch.json b/test/__tests__/data/mailjet_batch.json
deleted file mode 100644
index 10c2a863d02..00000000000
--- a/test/__tests__/data/mailjet_batch.json
+++ /dev/null
@@ -1,640 +0,0 @@
-[
- {
- "description": "batching with 1 listId and 1 action",
- "input": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "userId": "user@45",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- }
- }
- }
- }
- ],
- "output": [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58578/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "FORM": {},
- "JSON": {
- "Action": "addnoforce",
- "Contacts": [
- {
- "email": "test@user.com",
- "properties": { "country": "india" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- }
- ]
- },
- {
- "description": "batching with multiple listId and multiple action combinations",
- "input": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "userId": "user@45",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- }
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "userId": "user@46",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test2@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- },
- "externalId": [
- {
- "type": "listId",
- "id": "58570"
- }
- ]
- },
- "integrations": {
- "All": true,
- "mailjet": {
- "Action": "unsub"
- }
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 3
- },
- "message": {
- "userId": "user@47",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test3@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- },
- "externalId": [
- {
- "type": "listId",
- "id": "58576"
- }
- ]
- },
- "integrations": {
- "All": true,
- "mailjet": {
- "Action": "addforce"
- }
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 4
- },
- "message": {
- "userId": "user@48",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test4@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- },
- "externalId": [
- {
- "type": "listId",
- "id": "58576"
- }
- ]
- },
- "integrations": {
- "All": true,
- "mailjet": {
- "Action": "unsub"
- }
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 5
- },
- "message": {
- "userId": "user@49",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test5@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- },
- "externalId": [
- {
- "type": "listId",
- "id": "585896"
- }
- ]
- },
- "integrations": {
- "All": true,
- "mailjet": {
- "Action": "unsub"
- }
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 6
- },
- "message": {
- "userId": "user@49",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test5@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- },
- "externalId": [
- {
- "type": "listId",
- "id": "584896"
- }
- ]
- }
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 7
- },
- "message": {
- "userId": "user@50",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test10@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- }
- }
- }
- }
- ],
- "output": [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58578/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "addnoforce",
- "Contacts": [
- {
- "email": "test@user.com",
- "properties": {
- "country": "india"
- }
- },
- {
- "email": "test10@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 1 }, { "jobId": 7 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58570/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "unsub",
- "Contacts": [
- {
- "email": "test2@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 2 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58576/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "addforce",
- "Contacts": [
- {
- "email": "test3@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 3 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58576/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "unsub",
- "Contacts": [
- {
- "email": "test4@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 4 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/585896/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "unsub",
- "Contacts": [
- {
- "email": "test5@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 5 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/584896/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "JSON": {
- "Action": "addnoforce",
- "Contacts": [
- {
- "email": "test5@user.com",
- "properties": {
- "country": "india"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 6 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/mailjet_router.json b/test/__tests__/data/mailjet_router.json
deleted file mode 100644
index 7381a9dfa67..00000000000
--- a/test/__tests__/data/mailjet_router.json
+++ /dev/null
@@ -1,86 +0,0 @@
-[
- {
- "input": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [{ "from": "userCountry", "to": "country" }]
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "userId": "user@45",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "test@user.com",
- "phone": "7267286346802347827",
- "userId": "sajal",
- "city": "gondal",
- "userCountry": "india",
- "lastName": "dev",
- "username": "Samle_putUserName",
- "firstName": "rudderlabs"
- }
- }
- }
- }
- ],
- "output": [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailjet.com/v3/REST/contactslist/58578/managemanycontacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ="
- },
- "params": {},
- "body": {
- "FORM": {},
- "JSON": {
- "Action": "addnoforce",
- "Contacts": [
- {
- "email": "test@user.com",
- "properties": { "country": "india" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "apiSecret": "dummyApiSecret",
- "listId": "58578",
- "contactPropertiesMapping": [
- {
- "from": "userCountry",
- "to": "country"
- }
- ]
- }
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/mailjet_source.json b/test/__tests__/data/mailjet_source.json
index d9869585cb7..6d9562e2c4b 100644
--- a/test/__tests__/data/mailjet_source.json
+++ b/test/__tests__/data/mailjet_source.json
@@ -1,23 +1,25 @@
[
{
"description": "MailJet email open event",
- "input": {
- "event": "open",
- "time": 1664443614,
- "MessageID": 94857068804950690,
- "Message_GUID": "54d6cdec-f659-4547-8926-13d9c4126b82",
- "email": "test@rudderstack.com",
- "mj_campaign_id": 108760,
- "mj_contact_id": 399962859,
- "customcampaign": "mj.nl=58424",
- "ip": "66.249.84.231",
- "geo": "US",
- "agent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)",
- "CustomID": "",
- "Payload": ""
- },
- "output": {
- "Message": {
+ "input": [
+ {
+ "event": "open",
+ "time": 1664443614,
+ "MessageID": 94857068804950690,
+ "Message_GUID": "54d6cdec-f659-4547-8926-13d9c4126b82",
+ "email": "test@rudderstack.com",
+ "mj_campaign_id": 108760,
+ "mj_contact_id": 399962859,
+ "customcampaign": "mj.nl=58424",
+ "ip": "66.249.84.231",
+ "geo": "US",
+ "agent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)",
+ "CustomID": "",
+ "Payload": ""
+ }
+ ],
+ "output": [
+ {
"context": {
"library": {
"name": "unknown",
@@ -52,10 +54,10 @@
"originalTimestamp": "2022-09-29T09:26:54.000Z",
"userId": "5b6a3426dba2cb24e4f0aeec43bee9d7"
}
- }
+ ]
},
{
- "description": "MailJet email bounce event",
+ "description": "MailJet email bounce event where input event is of type ",
"input": {
"event": "bounce",
"time": 1664444171,
@@ -70,8 +72,8 @@
"error_related_to": "system",
"error": "connection issue"
},
- "output": {
- "Message": {
+ "output": [
+ {
"context": {
"library": {
"name": "unknown",
@@ -102,23 +104,25 @@
"originalTimestamp": "2022-09-29T09:36:11.000Z",
"userId": "5b6a3426dba2cb24e4f0aeec43bee9d7"
}
- }
+ ]
},
{
"description": "MailJet email sent event",
- "input": {
- "event": "sent",
- "time": 1664444171,
- "MessageID": 92886743924596480,
- "Message_GUID": "0230c73a-2b77-4aea-8ef2-ed15d0edc5fd",
- "email": "test@rudderstack.com",
- "mj_campaign_id": 108892,
- "mj_contact_id": 372651182,
- "customcampaign": "mj.nl=58486",
- "smtp_reply": "250 2.0.0 OK DMARC:Quarantine 1664444171 u17-20020adfdd51000000b0022cc3f2bf13si3225188wrm.271 - gsmtp"
- },
- "output": {
- "Message": {
+ "input": [
+ {
+ "event": "sent",
+ "time": 1664444171,
+ "MessageID": 92886743924596480,
+ "Message_GUID": "0230c73a-2b77-4aea-8ef2-ed15d0edc5fd",
+ "email": "test@rudderstack.com",
+ "mj_campaign_id": 108892,
+ "mj_contact_id": 372651182,
+ "customcampaign": "mj.nl=58486",
+ "smtp_reply": "250 2.0.0 OK DMARC:Quarantine 1664444171 u17-20020adfdd51000000b0022cc3f2bf13si3225188wrm.271 - gsmtp"
+ }
+ ],
+ "output": [
+ {
"context": {
"library": {
"name": "unknown",
@@ -149,26 +153,28 @@
"originalTimestamp": "2022-09-29T09:36:11.000Z",
"userId": "5b6a3426dba2cb24e4f0aeec43bee9d7"
}
- }
+ ]
},
{
"description": "MailJet email bounce event",
- "input": {
- "event": "bounce",
- "time": 1664444170,
- "MessageID": 56013522696710744,
- "Message_GUID": "dbe4f0a3-4a5a-4784-a724-a9794d3c0444",
- "email": "test@rudderstack.com",
- "mj_campaign_id": 108892,
- "mj_contact_id": 373142182,
- "customcampaign": "mj.nl=58486",
- "blocked": false,
- "hard_bounce": false,
- "error_related_to": "system",
- "error": "connection issue"
- },
- "output": {
- "Message": {
+ "input": [
+ {
+ "event": "bounce",
+ "time": 1664444170,
+ "MessageID": 56013522696710744,
+ "Message_GUID": "dbe4f0a3-4a5a-4784-a724-a9794d3c0444",
+ "email": "test@rudderstack.com",
+ "mj_campaign_id": 108892,
+ "mj_contact_id": 373142182,
+ "customcampaign": "mj.nl=58486",
+ "blocked": false,
+ "hard_bounce": false,
+ "error_related_to": "system",
+ "error": "connection issue"
+ }
+ ],
+ "output": [
+ {
"context": {
"library": {
"name": "unknown",
@@ -199,25 +205,27 @@
"originalTimestamp": "2022-09-29T09:36:10.000Z",
"userId": "5b6a3426dba2cb24e4f0aeec43bee9d7"
}
- }
+ ]
},
{
"description": "MailJet when no email is present",
- "input": {
- "event": "bounce",
- "time": 1664444170,
- "MessageID": 56013522696710744,
- "Message_GUID": "dbe4f0a3-4a5a-4784-a724-a9794d3c0444",
- "mj_campaign_id": 108892,
- "mj_contact_id": 373142182,
- "customcampaign": "mj.nl=58486",
- "blocked": false,
- "hard_bounce": false,
- "error_related_to": "system",
- "error": "connection issue"
- },
- "output": {
- "Message": {
+ "input": [
+ {
+ "event": "bounce",
+ "time": 1664444170,
+ "MessageID": 56013522696710744,
+ "Message_GUID": "dbe4f0a3-4a5a-4784-a724-a9794d3c0444",
+ "mj_campaign_id": 108892,
+ "mj_contact_id": 373142182,
+ "customcampaign": "mj.nl=58486",
+ "blocked": false,
+ "hard_bounce": false,
+ "error_related_to": "system",
+ "error": "connection issue"
+ }
+ ],
+ "output": [
+ {
"context": {
"library": {
"name": "unknown",
@@ -244,6 +252,118 @@
},
"originalTimestamp": "2022-09-29T09:36:10.000Z"
}
- }
+ ]
+ },
+ {
+ "description": "MailJet Multiple payloads in single request",
+ "input": [
+ {
+ "event": "open",
+ "time": 1704458040,
+ "MessageID": 987654,
+ "Message_GUID": "876r-oihugyf-7tfygh",
+ "email": "abc@r.com",
+ "mj_campaign_id": 321,
+ "mj_contact_id": 123,
+ "customcampaign": "test_campaign",
+ "url": "https://www.example.com/",
+ "ip": "ip_info",
+ "geo": "some geo info",
+ "agent": "mailjet api test"
+ },
+ {
+ "event": "click",
+ "time": 1704458041,
+ "MessageID": 12345234567,
+ "Message_GUID": "12345-kjhgfd-2efv",
+ "email": "abc@r.com",
+ "mj_campaign_id": 12,
+ "mj_contact_id": 32532,
+ "customcampaign": "test_campaign",
+ "url": "https://www.example.com/",
+ "ip": "ip_info",
+ "geo": "some geo info",
+ "agent": "mailjet api test"
+ }
+ ],
+ "output": [
+ {
+ "context": {
+ "library": {
+ "name": "unknown",
+ "version": "unknown"
+ },
+ "ip": "ip_info",
+ "integration": {
+ "name": "MailJet"
+ },
+ "traits": {
+ "email": "abc@r.com"
+ },
+ "page": {
+ "url": "https://www.example.com/"
+ },
+ "userAgent": "mailjet api test",
+ "externalId": [
+ {
+ "type": "mailjetContactId",
+ "id": 123
+ }
+ ]
+ },
+ "integrations": {
+ "MailJet": false
+ },
+ "type": "track",
+ "event": "open",
+ "properties": {
+ "customcampaign": "test_campaign",
+ "mj_campaign_id": 321,
+ "ip": "ip_info",
+ "url": "https://www.example.com/"
+ },
+ "userId": "593a5aff0b445b3b77a6d9676b7ec86e",
+ "originalTimestamp": "2024-01-05T12:34:00.000Z"
+ },
+ {
+ "context": {
+ "library": {
+ "name": "unknown",
+ "version": "unknown"
+ },
+ "page": {
+ "url": "https://www.example.com/"
+ },
+
+ "integration": {
+ "name": "MailJet"
+ },
+ "traits": {
+ "email": "abc@r.com"
+ },
+ "userAgent": "mailjet api test",
+ "ip": "ip_info",
+ "externalId": [
+ {
+ "type": "mailjetContactId",
+ "id": 32532
+ }
+ ]
+ },
+ "integrations": {
+ "MailJet": false
+ },
+ "type": "track",
+ "event": "click",
+ "properties": {
+ "customcampaign": "test_campaign",
+ "mj_campaign_id": 12,
+ "ip": "ip_info",
+ "url": "https://www.example.com/"
+ },
+ "userId": "593a5aff0b445b3b77a6d9676b7ec86e",
+ "originalTimestamp": "2024-01-05T12:34:01.000Z"
+ }
+ ]
}
]
diff --git a/test/__tests__/data/mailmodo.json b/test/__tests__/data/mailmodo.json
deleted file mode 100644
index 30b093a6b20..00000000000
--- a/test/__tests__/data/mailmodo.json
+++ /dev/null
@@ -1,573 +0,0 @@
-[
- {
- "description": "Track call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "event": "trackevent",
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "user123456001",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Pune",
- "name": "First User",
- "email": "firstUser@testmail.com",
- "title": "VP",
- "gender": "female",
- "avatar": "https://i.pravatar.cc/300"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailmodo.com/api/v1/addEvent",
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "email": "firstUser@testmail.com",
- "event_name": "trackevent"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Providing empty API Key",
- "input": {
- "destination": {
- "Config": {
- "apiKey": ""
- }
- },
- "message": {
- "event": "trackevent",
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "user123456001",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Pune",
- "name": "First User",
- "email": "firstUser@testmail.com",
- "title": "VP",
- "gender": "female",
- "avatar": "https://i.pravatar.cc/300"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "API Key is not present, Aborting event"
- }
- },
- {
- "description": "Not providing event type",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "ahj"
- }
- },
- "message": {
- "event": "trackevent",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "user123456001",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Pune",
- "name": "First User",
- "email": "firstUser@testmail.com",
- "title": "VP",
- "gender": "female",
- "avatar": "https://i.pravatar.cc/300"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Event type is required"
- }
- },
- {
- "description": "Page call- not supported",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abcdef"
- }
- },
- "message": {
- "type": "page",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Event type page is not supported"
- }
- },
- {
- "description": "Identify call- with empty listName",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": ""
- }
- },
- "message": {
- "type": "identify",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "email": "test3@abc.com",
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailmodo.com/api/v1/addToList/batch",
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "listName": "Rudderstack",
- "values": [
- {
- "email": "test3@abc.com"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Identify call- with listName",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abcdef"
- }
- },
- "message": {
- "type": "identify",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "email": "test3@abc.com",
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailmodo.com/api/v1/addToList/batch",
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "listName": "abcdef",
- "values": [
- {
- "email": "test3@abc.com"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Identify call- without email",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abcdef"
- }
- },
- "message": {
- "type": "identify",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Missing required value from [\"traits.email\",\"context.traits.email\",\"properties.email\"]"
- }
- },
- {
- "description": "Identify call- with user properties(address as an object)",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abcdef"
- }
- },
- "message": {
- "type": "identify",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "traits": {
- "email": "testabc2@abcd.com",
- "name": "Rudder Test",
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "age": 21,
- "phone": "9876543210",
- "address": {
- "street": "A street",
- "city": "Vijayawada",
- "country": "India"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailmodo.com/api/v1/addToList/batch",
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "listName": "abcdef",
- "values": [
- {
- "email": "testabc2@abcd.com",
- "data": {
- "age": 21,
- "first_name": "Test",
- "last_name": "Rudderlabs",
- "name": "Rudder Test",
- "phone": "9876543210",
- "trait1": "new-val",
- "city": "Vijayawada",
- "country": "India",
- "address1": "A street Vijayawada India "
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Identify call- with user properties(address as a string)",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abcdef"
- }
- },
- "message": {
- "type": "identify",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "traits": {
- "email": "testabc2@abcd.com",
- "name": "Rudder Test",
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "age": 21,
- "phone": "9876543210",
- "address": "welcome to home"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.mailmodo.com/api/v1/addToList/batch",
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "listName": "abcdef",
- "values": [
- {
- "email": "testabc2@abcd.com",
- "data": {
- "age": 21,
- "first_name": "Test",
- "last_name": "Rudderlabs",
- "name": "Rudder Test",
- "phone": "9876543210",
- "trait1": "new-val",
- "address1": "welcome to home"
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- }
-]
diff --git a/test/__tests__/data/mailmodo_router_input.json b/test/__tests__/data/mailmodo_router_input.json
deleted file mode 100644
index 78db8426ff6..00000000000
--- a/test/__tests__/data/mailmodo_router_input.json
+++ /dev/null
@@ -1,141 +0,0 @@
-[
- {
- "message": {
- "type": "identify",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "email": "test@abc.com",
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abc"
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "email": "test@abc.com",
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- },
- "metadata": {
- "jobId": 3
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abc"
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "type": "identify",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "traits": {
- "email": "test@abc.com",
- "name": "Rudder Test",
- "firstName": "Test",
- "lastName": "Rudderlabs",
- "age": 21,
- "phone": "9876543210"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "metadata": {
- "jobId": 4
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abc"
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "type": "identify",
- "event": "Email Opened",
- "sentAt": "2020-08-28T16:26:16.473Z",
- "context": {
- "library": {
- "name": "analytics-node",
- "version": "0.0.3"
- }
- },
- "_metadata": {
- "nodeVersion": "10.22.0"
- },
- "messageId": "node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453",
- "properties": {
- "subject": "resume validate",
- "sendtime": "2020-01-01",
- "sendlocation": "akashdeep@gmail.com"
- },
- "anonymousId": "abcdeeeeeeeexxxx102",
- "originalTimestamp": "2020-08-28T16:26:06.468Z"
- },
- "metadata": {
- "jobId": 5
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": ""
- },
- "Enabled": true
- }
- }
-]
diff --git a/test/__tests__/data/mailmodo_router_output.json b/test/__tests__/data/mailmodo_router_output.json
deleted file mode 100644
index 2e2eb9e3fb0..00000000000
--- a/test/__tests__/data/mailmodo_router_output.json
+++ /dev/null
@@ -1,121 +0,0 @@
-[
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "listName": "abc",
- "values": [
- {
- "email": "test@abc.com"
- },
- {
- "email": "test@abc.com",
- "data": {
- "name": "Rudder Test",
- "first_name": "Test",
- "last_name": "Rudderlabs",
- "age": 21,
- "phone": "9876543210",
- "trait1": "new-val"
- }
- }
- ]
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://api.mailmodo.com/api/v1/addToList/batch"
- },
- "metadata": [
- {
- "jobId": 2
- },
- {
- "jobId": 4
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abc"
- },
- "Enabled": true
- }
- },
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "email": "test@abc.com",
- "event_name": "Email Opened",
- "event_properties": {
- "email": "test@abc.com",
- "sendlocation": "akashdeep@gmail.com",
- "sendtime": "2020-01-01",
- "subject": "resume validate"
- }
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "mmApiKey": "dummyApiKey",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://api.mailmodo.com/api/v1/addEvent"
- },
- "metadata": [
- {
- "jobId": 3
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": "abc"
- },
- "Enabled": true
- }
- },
- {
- "batched": false,
- "error": "Missing required value from [\"traits.email\",\"context.traits.email\",\"properties.email\"]",
- "metadata": [
- {
- "jobId": 5
- }
- ],
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- },
- "statusCode": 400,
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "listName": ""
- },
- "Enabled": true
- }
- }
-]
diff --git a/test/__tests__/data/marketo_bulk_upload_jobStatus_output.json b/test/__tests__/data/marketo_bulk_upload_jobStatus_output.json
index eac43ee82c8..60628f6b3f5 100644
--- a/test/__tests__/data/marketo_bulk_upload_jobStatus_output.json
+++ b/test/__tests__/data/marketo_bulk_upload_jobStatus_output.json
@@ -8,7 +8,7 @@
},
{
"statusCode": 400,
- "error": "Unable to fetch job status"
+ "error": "Unable to fetch job status: due to error \"\""
}
]
},
@@ -21,7 +21,7 @@
},
{
"statusCode": 400,
- "error": "Unable to fetch job status"
+ "error": "Unable to fetch job status: due to error \"\""
}
]
}
diff --git a/test/__tests__/data/marketo_input.json b/test/__tests__/data/marketo_input.json
deleted file mode 100644
index 122525560e0..00000000000
--- a/test/__tests__/data/marketo_input.json
+++ /dev/null
@@ -1,1157 +0,0 @@
-[
- {
- "message": {
- "channel": "sources",
- "context": {
- "externalId": [
- {
- "id": "lynnanderson@smith.net",
- "identifierType": "email",
- "type": "MARKETO-new_user"
- }
- ],
- "mappedToDestination": "true",
- "sources": {
- "batch_id": "f5f240d0-0acb-46e0-b043-57fb0aabbadd",
- "job_id": "1zAj94bEy8komdqnYtSoDp0VmGs/Syncher",
- "job_run_id": "c5tar6cqgmgmcjvupdhg",
- "task_id": "tt_10_rows_check",
- "task_run_id": "c5tar6cqgmgmcjvupdi0",
- "version": "release.v1.6.8"
- }
- },
- "messageId": "2f052f7c-f694-4849-a7ed-a432f7ffa0a4",
- "originalTimestamp": "2021-10-28T14:03:50.503Z",
- "receivedAt": "2021-10-28T14:03:46.567Z",
- "recordId": "8",
- "request_ip": "10.1.94.92",
- "rudderId": "c0f6843e-e3d6-4946-9752-fa339fbadef2",
- "sentAt": "2021-10-28T14:03:50.503Z",
- "timestamp": "2021-10-28T14:03:46.566Z",
- "traits": {
- "marketoGUID": "23",
- "administrative_unit": "Minnesota",
- "am_pm": "AM",
- "boolean": true,
- "firstname": "Jacqueline",
- "pPower": "AM",
- "userId": "Jacqueline"
- },
- "type": "identify",
- "userId": "lynnanderson@smith.net"
- },
- "destination": {
- "ID": "1zia9wKshXt80YksLmUdJnr7IHI",
- "Name": "test_marketo",
- "DestinationDefinition": {
- "ID": "1iVQvTRMsPPyJzwol0ifH93QTQ6",
- "Name": "MARKETO",
- "DisplayName": "Marketo",
- "Config": {
- "destConfig": {
- "defaultConfig": []
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": [],
- "supportedMessageTypes": ["identify", "page", "screen", "track"],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "supportsVisualMapper": true,
- "transformAt": "processor",
- "transformAtV1": "processor"
- },
- "ResponseRules": null
- },
- "Config": {
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "accountId": "marketo_acct_id_success",
- "rudderEventsMapping": []
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "customActivityPrimaryKeyMap": [
- {
- "from": "Product Clicked",
- "to": "name"
- }
- ],
- "customActivityEventMap": [
- {
- "from": "Product Clicked",
- "to": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product",
- "product_id": "prod_1"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-12-17T21:00:59.176Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- },
- {
- "from": "product_id",
- "to": "productId"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "userId": "user_id_success",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": false,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "userId": "user_id_success",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBerte",
- "Config": {
- "accountId": "marketo_acct_id_token_failure",
- "clientId": "marketo_acct_id_token_failure",
- "clientSecret": "marketo_acct_id_token_failure",
- "trackAnonymousEvents": false,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "userId": "user_id_success",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBerte",
- "Config": {
- "accountId": "marketo_acct_id_failed",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": false,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- },
- {
- "from": "product_id",
- "to": "productId"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": false,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Purchased",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "product_name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "product_name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "product_name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "screen",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "integrations": {
- "All": true
- },
- "traits": {
- "score": "0.5"
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- },
- {
- "from": "product_id",
- "to": "productId"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "score",
- "to": "customLeadScore"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- }
- }
- },
- {
- "message": {
- "channel": "sources",
- "context": {
- "externalId": [
- {
- "id": "lynnanderson@smith.net",
- "identifierType": "email",
- "type": "MARKETO-new_user"
- }
- ],
- "traits": {
- "marketoGUID": "23",
- "administrative_unit": "Minnesota",
- "am_pm": "AM",
- "boolean": true,
- "firstname": "Jacqueline",
- "pPower": "AM",
- "userId": "Jacqueline"
- },
- "sources": {
- "batch_id": "f5f240d0-0acb-46e0-b043-57fb0aabbadd",
- "job_id": "1zAj94bEy8komdqnYtSoDp0VmGs/Syncher",
- "job_run_id": "c5tar6cqgmgmcjvupdhg",
- "task_id": "tt_10_rows_check",
- "task_run_id": "c5tar6cqgmgmcjvupdi0",
- "version": "release.v1.6.8"
- }
- },
- "messageId": "2f052f7c-f694-4849-a7ed-a432f7ffa0a4",
- "originalTimestamp": "2021-10-28T14:03:50.503Z",
- "receivedAt": "2021-10-28T14:03:46.567Z",
- "recordId": "8",
- "request_ip": "10.1.94.92",
- "rudderId": "c0f6843e-e3d6-4946-9752-fa339fbadef2",
- "sentAt": "2021-10-28T14:03:50.503Z",
- "timestamp": "2021-10-28T14:03:46.566Z",
- "type": "identify",
- "userId": "dummyMail@dummyDomain.com"
- },
- "destination": {
- "ID": "1zia9wKshXt80YksLmUdJnr7IHI",
- "Name": "test_marketo",
- "DestinationDefinition": {
- "ID": "1iVQvTRMsPPyJzwol0ifH93QTQ6",
- "Name": "MARKETO",
- "DisplayName": "Marketo",
- "Config": {
- "destConfig": {
- "defaultConfig": []
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": [],
- "supportedMessageTypes": ["identify", "page", "screen", "track"],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "supportsVisualMapper": true,
- "transformAt": "processor",
- "transformAtV1": "processor"
- },
- "ResponseRules": null
- },
- "Config": {
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "accountId": "marketo_acct_id_success",
- "rudderEventsMapping": []
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- }
-]
diff --git a/test/__tests__/data/marketo_output.json b/test/__tests__/data/marketo_output.json
deleted file mode 100644
index 32d31ccaf83..00000000000
--- a/test/__tests__/data/marketo_output.json
+++ /dev/null
@@ -1,204 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/customobjects/new_user.json",
- "headers": {
- "Authorization": "Bearer access_token_success",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "action": "createOrUpdate",
- "dedupeBy": "dedupeFields",
- "input": [
- {
- "administrative_unit": "Minnesota",
- "am_pm": "AM",
- "boolean": true,
- "firstname": "Jacqueline",
- "pPower": "AM",
- "userId": "Jacqueline",
- "email": "lynnanderson@smith.net"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [
- {
- "name": "productId",
- "value": "prod_1"
- }
- ],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 500,
- "error": "Request Failed for marketo, Access Token Expired (Retryable).During fetching auth token"
- },
- {
- "statusCode": 500,
- "error": "Request Failed for marketo, Access Token Expired (Retryable).During fetching auth token"
- },
- {
- "statusCode": 400,
- "error": "Invalid traits value for Marketo"
- },
- {
- "statusCode": 400,
- "error": "Anonymous event tracking is turned off and invalid userId"
- },
- {
- "statusCode": 400,
- "error": "Event is not mapped to Custom Activity"
- },
- {
- "statusCode": 400,
- "error": "Primary Key value is invalid for the event"
- },
- {
- "statusCode": 400,
- "error": "Message Type is not present. Aborting message."
- },
- {
- "statusCode": 400,
- "error": "Message type not supported"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json",
- "headers": {
- "Authorization": "Bearer access_token_success",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "action": "createOrUpdate",
- "input": [
- {
- "customLeadScore": "0.5",
- "id": 4
- }
- ],
- "lookupField": "id"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json",
- "headers": {
- "Authorization": "Bearer access_token_success",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "action": "createOrUpdate",
- "input": [{ "id": 4, "userId": "dummyMail@dummyDomain.com" }],
- "lookupField": "id"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/marketo_router_input.json b/test/__tests__/data/marketo_router_input.json
deleted file mode 100644
index a7a40a221a2..00000000000
--- a/test/__tests__/data/marketo_router_input.json
+++ /dev/null
@@ -1,996 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-03-12T09:05:03.421Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmLd",
- "deleted": false,
- "createdAt": "2020-12-30T08:39:32.005Z",
- "updatedAt": "2021-02-03T16:22:31.374Z",
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "anon_id_success",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "1",
- "name": "TestAppName",
- "namespace": "com.android.sample",
- "version": "1.0"
- },
- "device": {
- "id": "anon_id_success",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.1-beta.1"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "os": {
- "name": "Android",
- "version": "8.1.0"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "anon_id_success"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)"
- },
- "event": "Product Clicked",
- "integrations": {
- "All": true
- },
- "messageId": "id1",
- "properties": {
- "name": "Test Product",
- "product_id": "prod_1"
- },
- "originalTimestamp": "2020-12-17T21:00:59.176Z",
- "type": "track",
- "sentAt": "2020-12-17T21:00:59.176Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmLd",
- "deleted": false,
- "createdAt": "2020-12-30T08:39:32.005Z",
- "updatedAt": "2021-02-03T16:22:31.374Z",
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2022-09-19T10:34:02.002Z",
- "userId": "e17c5a5e-5e2f-430b-b497-fe3f1ea3a704",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "2.12.1",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://accounts.app.t2.broken.com/home",
- "path": "/home",
- "title": "Home",
- "search": "",
- "tab_url": "https://accounts.app.t2.broken.com/home",
- "referrer": "https://ts50-cvii.core.broken.org/",
- "initial_referrer": "https://ts50-cvii.core.broken.org/",
- "referring_domain": "ts50-cvii.core.broken.org",
- "initial_referring_domain": "ts50-cvii.core.broken.org"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1728,
- "height": 1117,
- "density": 2,
- "innerWidth": 1728,
- "innerHeight": 969
- },
- "traits": {
- "name": "AM",
- "email": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail",
- "lastName": "M",
- "firstName": "A",
- "accountName": "MACDEV",
- "billingName": "g g",
- "companyName": "macDev",
- "currentTier": "Webinar Pro 250",
- "billingCycle": "Annually",
- "lastBillingDate": "2022-06-29T09:40:42.000Z",
- "nextBillingDate": "2023-09-09T04:00:00.000Z",
- "subscriptionType": "Webinar Pro 250",
- "subscriptionStatus": "ACTIVE",
- "lastWebinarEventDate": "2022-09-15T20:00:00.000Z",
- "nextWebinarEventDate": "2022-09-16T06:15:00.000Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "2.12.1"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
- },
- "rudderId": "73dc83ef-587f-4077-90f3-c36083e64019",
- "messageId": "1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007",
- "timestamp": "2022-09-19T10:34:02.954Z",
- "receivedAt": "2022-09-19T10:34:02.956Z",
- "request_ip": "11.105.44.120",
- "anonymousId": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-09-19T10:34:02.000Z"
- },
- "destination": {
- "Config": {
- "accountId": "valid_account_broken_event",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- },
- "metadata": {
- "jobId": 3
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2022-09-19T10:34:02.002Z",
- "userId": "e17c5a5e-5e2f-430b-b497-fe3f1ea3a704",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "2.12.1",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://accounts.app.t2.broken.com/home",
- "path": "/home",
- "title": "Home",
- "search": "",
- "tab_url": "https://accounts.app.t2.broken.com/home",
- "referrer": "https://ts50-cvii.core.broken.org/",
- "initial_referrer": "https://ts50-cvii.core.broken.org/",
- "referring_domain": "ts50-cvii.core.broken.org",
- "initial_referring_domain": "ts50-cvii.core.broken.org"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1728,
- "height": 1117,
- "density": 2,
- "innerWidth": 1728,
- "innerHeight": 969
- },
- "traits": {
- "name": "AM",
- "email": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail",
- "lastName": "M",
- "firstName": "A",
- "accountName": "MACDEV",
- "billingName": "g g",
- "companyName": "macDev",
- "currentTier": "Webinar Pro 250",
- "billingCycle": "Annually",
- "lastBillingDate": "2022-06-29T09:40:42.000Z",
- "nextBillingDate": "2023-09-09T04:00:00.000Z",
- "subscriptionType": "Webinar Pro 250",
- "subscriptionStatus": "ACTIVE",
- "lastWebinarEventDate": "2022-09-15T20:00:00.000Z",
- "nextWebinarEventDate": "2022-09-16T06:15:00.000Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "2.12.1"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
- },
- "rudderId": "73dc83ef-587f-4077-90f3-c36083e64019",
- "messageId": "1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007",
- "timestamp": "2022-09-19T10:34:02.954Z",
- "receivedAt": "2022-09-19T10:34:02.956Z",
- "request_ip": "11.105.44.120",
- "anonymousId": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-09-19T10:34:02.000Z"
- },
- "destination": {
- "Config": {
- "accountId": "unhandled_status_code",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- },
- "metadata": {
- "jobId": 4
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2022-09-19T10:34:02.002Z",
- "userId": "e17c5a5e-5e2f-430b-b497-fe3f1ea3a704",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "2.12.1",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://accounts.app.t2.broken.com/home",
- "path": "/home",
- "title": "Home",
- "search": "",
- "tab_url": "https://accounts.app.t2.broken.com/home",
- "referrer": "https://ts50-cvii.core.broken.org/",
- "initial_referrer": "https://ts50-cvii.core.broken.org/",
- "referring_domain": "ts50-cvii.core.broken.org",
- "initial_referring_domain": "ts50-cvii.core.broken.org"
- },
- "locale": "en-IN",
- "screen": {
- "width": 1728,
- "height": 1117,
- "density": 2,
- "innerWidth": 1728,
- "innerHeight": 969
- },
- "traits": {
- "name": "AM",
- "email": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail",
- "lastName": "M",
- "firstName": "A",
- "accountName": "MACDEV",
- "billingName": "g g",
- "companyName": "macDev",
- "currentTier": "Webinar Pro 250",
- "billingCycle": "Annually",
- "lastBillingDate": "2022-06-29T09:40:42.000Z",
- "nextBillingDate": "2023-09-09T04:00:00.000Z",
- "subscriptionType": "Webinar Pro 250",
- "subscriptionStatus": "ACTIVE",
- "lastWebinarEventDate": "2022-09-15T20:00:00.000Z",
- "nextWebinarEventDate": "2022-09-16T06:15:00.000Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "2.12.1"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
- },
- "rudderId": "73dc83ef-587f-4077-90f3-c36083e64019",
- "messageId": "1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007",
- "timestamp": "2022-09-19T10:34:02.954Z",
- "receivedAt": "2022-09-19T10:34:02.956Z",
- "request_ip": "11.105.44.120",
- "anonymousId": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-09-19T10:34:02.000Z"
- },
- "destination": {
- "Config": {
- "accountId": "successful_identify_transformation",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- },
- "metadata": {
- "jobId": 5
- }
- }
-]
diff --git a/test/__tests__/data/marketo_router_metadata_input.json b/test/__tests__/data/marketo_router_metadata_input.json
deleted file mode 100644
index b1e3a26f694..00000000000
--- a/test/__tests__/data/marketo_router_metadata_input.json
+++ /dev/null
@@ -1,163 +0,0 @@
-{
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- },
- {
- "jobId": 1
- },
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ]
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmLd",
- "deleted": false,
- "createdAt": "2020-12-30T08:39:32.005Z",
- "updatedAt": "2021-02-03T16:22:31.374Z",
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "customActivityPropertyMap",
- "rudderEventsMapping",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
-}
diff --git a/test/__tests__/data/marketo_router_metadata_output.json b/test/__tests__/data/marketo_router_metadata_output.json
deleted file mode 100644
index 4fb7308fe4f..00000000000
--- a/test/__tests__/data/marketo_router_metadata_output.json
+++ /dev/null
@@ -1,20 +0,0 @@
-[
- {
- "destInfo": {
- "authKey": "1mMy5cqbtfuaKZv1IhVQKnBdVwe"
- },
- "jobId": 1
- },
- {
- "destInfo": {
- "authKey": "1mMy5cqbtfuaKZv1IhVQKnBdVwe"
- },
- "jobId": 1
- },
- {
- "destInfo": {
- "authKey": "1mMy5cqbtfuaKZv1IhVQKnBdVwe"
- },
- "jobId": 1
- }
-]
diff --git a/test/__tests__/data/marketo_router_output.json b/test/__tests__/data/marketo_router_output.json
deleted file mode 100644
index c4b59b396d1..00000000000
--- a/test/__tests__/data/marketo_router_output.json
+++ /dev/null
@@ -1,792 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmLd",
- "deleted": false,
- "createdAt": "2020-12-30T08:39:32.005Z",
- "updatedAt": "2021-02-03T16:22:31.374Z",
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "input": [
- {
- "activityDate": "2020-12-17T21:00:59.176Z",
- "activityTypeId": 100001,
- "attributes": [],
- "leadId": 4,
- "primaryAttributeValue": "Test Product"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "accountId": "marketo_acct_id_success",
- "clientId": "marketo_client_id_success",
- "clientSecret": "marketo_client_secret_success",
- "trackAnonymousEvents": true,
- "customActivityPropertyMap": [
- {
- "from": "name",
- "to": "productName"
- }
- ],
- "leadTraitMapping": [
- {
- "from": "leadScore",
- "to": "customLeadScore"
- }
- ],
- "rudderEventsMapping": [
- {
- "event": "Product Clicked",
- "marketoPrimarykey": "name",
- "marketoActivityId": "100001"
- }
- ]
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVwe",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmLd",
- "deleted": false,
- "createdAt": "2020-12-30T08:39:32.005Z",
- "updatedAt": "2021-02-03T16:22:31.374Z",
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- },
- {
- "batched": false,
- "statusCode": 400,
- "error": "{\"message\":\"Request Failed for marketo, Lookup field 'userId' not found (Aborted).[Marketo Transformer]: During lead look up using email\",\"destinationResponse\":{\"response\":{\"requestId\":\"142e4#1835b117b76\",\"success\":false,\"errors\":[{\"code\":\"1006\",\"message\":\"Lookup field 'userId' not found\"}]},\"status\":200}}",
- "statTags": {
- "errorCategory": "network",
- "errorType": "aborted"
- },
- "metadata": [
- {
- "jobId": 3
- }
- ],
- "destination": {
- "Config": {
- "accountId": "valid_account_broken_event",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- },
- {
- "batched": false,
- "statusCode": 400,
- "error": "{\"message\":\"Error occurred [Marketo Transformer]: During lead look up using email -> some other problem\",\"destinationResponse\":{\"response\":{\"requestId\":\"142e4#1835b117b76\",\"success\":false,\"errors\":[{\"code\":\"random_marketo_code\",\"message\":\"some other problem\"}]},\"status\":200}}",
- "statTags": {
- "errorCategory": "network",
- "errorType": "aborted",
- "meta": "unhandledStatusCode"
- },
- "destination": {
- "Config": {
- "accountId": "unhandled_status_code",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- },
- "metadata": [
- {
- "jobId": 4
- }
- ]
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://successful_identify_transformation.mktorest.com/rest/v1/leads.json",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer access_token_success"
- },
- "params": {},
- "body": {
- "JSON": {
- "action": "createOrUpdate",
- "input": [
- {
- "Email": "0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail",
- "FirstName": "A",
- "LastName": "M",
- "id": 4,
- "userId": "e17c5a5e-5e2f-430b-b497-fe3f1ea3a704"
- }
- ],
- "lookupField": "id"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 5
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "accountId": "successful_identify_transformation",
- "clientId": "504300cd-76b2-a7l4-bhle-90a07420nx73",
- "clientSecret": "3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd",
- "trackAnonymousEvents": false,
- "createIfNotExist": true,
- "rudderEventsMapping": [
- {
- "event": "acq_signup_completed",
- "marketoActivityId": "100026"
- },
- {
- "event": "act_createwebinarform_submit",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_style",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_view",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_webinar_join",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_presentation_addteammember",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_discussions_savediscussion",
- "marketoActivityId": "100025"
- },
- {
- "event": "act_engagement_networking_savetime",
- "marketoActivityId": "100025"
- }
- ]
- },
- "destinationDefinition": {
- "config": {
- "destConfig": {
- "defaultConfig": [
- "accountId",
- "clientId",
- "clientSecret",
- "trackAnonymousEvents",
- "rudderEventsMapping",
- "customActivityPropertyMap",
- "leadTraitMapping"
- ]
- },
- "secretKeys": ["clientSecret"],
- "excludeKeys": [],
- "includeKeys": [],
- "routerTransform": true,
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- },
- "responseRules": {
- "responseType": "JSON",
- "rules": {
- "retryable": [
- {
- "success": "false",
- "errors.0.code": 600
- },
- {
- "success": "false",
- "errors.0.code": 601
- },
- {
- "success": "false",
- "errors.0.code": 602
- },
- {
- "success": "false",
- "errors.0.code": 604
- },
- {
- "success": "false",
- "errors.0.code": 606
- },
- {
- "success": "false",
- "errors.0.code": 607
- },
- {
- "success": "false",
- "errors.0.code": 608
- },
- {
- "success": "false",
- "errors.0.code": 611
- }
- ],
- "abortable": [
- {
- "success": "false",
- "errors.0.code": 603
- },
- {
- "success": "false",
- "errors.0.code": 605
- },
- {
- "success": "false",
- "errors.0.code": 609
- },
- {
- "success": "false",
- "errors.0.code": 610
- }
- ]
- }
- },
- "id": "1aIXqM806xAVm92nx07YwKbRrO9",
- "name": "MARKETO",
- "displayName": "Marketo",
- "createdAt": "2020-04-09T09:24:31.794Z",
- "updatedAt": "2021-01-11T11:03:28.103Z"
- },
- "secretConfig": {},
- "ID": "1mMy5cqbtfuaKZv1IhVQKnBdVke",
- "name": "Marketo",
- "enabled": true,
- "workspaceId": "1TSN08muJTZwH8iCDmnnRt1pmMd",
- "deleted": false,
- "createdAt": "2022-02-10T08:39:32.005Z",
- "updatedAt": "2022-09-03T16:22:31.374Z",
- "transformations": [],
- "isConnectionEnabled": true,
- "isProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/moengage_input.json b/test/__tests__/data/moengage_input.json
deleted file mode 100644
index 290d19565c1..00000000000
--- a/test/__tests__/data/moengage_input.json
+++ /dev/null
@@ -1,1661 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "timezone": "Asia/Tokyo",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "category": "some category",
- "originalArray": [
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- }
- ],
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "traits": {
- "CID": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "RC_DATE": "2021-03-22T12:36:34Z",
- "RC_NO_OF_SKUS": 1,
- "RC_PN_SKU_LIST": "9317"
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "device": {
- "id": "7e32188a4dab669f",
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "token": "desuhere",
- "type": "android"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "531e3507-1ef5-4a06-b83c-cb521ff34f0c",
- "originalTimestamp": "2020-10-16T08:53:29.386Z",
- "receivedAt": "2020-10-16T14:23:29.402+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:53:29.387Z",
- "timestamp": "2020-10-16T14:23:29.401+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "a61357dd-e29e-4033-b1af-029625947fec",
- "originalTimestamp": "2020-10-16T09:05:11.001Z",
- "receivedAt": "2020-10-16T14:35:11.014+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:05:11.002Z",
- "timestamp": "2020-10-16T14:35:11.013+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "EU"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "IND"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "AMA"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "IND"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9eb2f7c0-d896-494e-b105-60f604ce2906",
- "originalTimestamp": "2020-10-16T09:09:31.465Z",
- "receivedAt": "2020-10-16T14:39:31.468+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T09:09:31.466Z",
- "timestamp": "2020-10-16T14:39:31.467+05:30",
- "type": "gone",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "IND"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "timezone": "Asia/Kolkata",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "category": "some category",
- "originalArray": [
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3", "tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3", "tag_1", "tag_2", "tag_3"]
- }
- ],
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "timezone": "Wrong/Timezone",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "device": {
- "id": "7e32188a4dab669f",
- "manufacturer": "Google",
- "model": "AOSP on IA Emulator",
- "name": "generic_x86_arm",
- "token": "desuhere",
- "type": "ipados"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "531e3507-1ef5-4a06-b83c-cb521ff34f0c",
- "originalTimestamp": "2020-10-16T08:53:29.386Z",
- "receivedAt": "2020-10-16T14:23:29.402+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:53:29.387Z",
- "timestamp": "2020-10-16T14:23:29.401+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "timezone": "Wrong/Timezone",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "device": {
- "id": "7e32188a4dab669f",
- "manufacturer": "Google",
- "model": "AOSP on IA Emulator",
- "name": "generic_x86_arm",
- "token": "desuhere",
- "type": "ipados"
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "category": "some category",
- "originalArray": [
- {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"]
- },
- {
- "nested_field": "nested value",
- "tags": ["tag_1"]
- },
- {
- "nested_field": "nested value"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "timezone": "Wrong/Timezone",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "device": {
- "id": "7e32188a4dab669f",
- "manufacturer": "Google",
- "model": "AOSP on IA Emulator",
- "name": "generic_x86_arm",
- "token": "desuhere",
- "type": "ipados"
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "category": "some category",
- "originalArray": {
- "nested_field": "nested value",
- "tags": ["tag_1", "tag_2", "tag_3"],
- "key1": {
- "nested_field": "nested value",
- "key11": "val11",
- "key12": "val12",
- "key13": {
- "k1": "v1",
- "k2": "v2"
- },
- "key2": {},
- "key3": []
- }
- },
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "messageId": "adc7c2d0-0ebf-4593-b878-a0eb75932820",
- "originalTimestamp": "2023-03-09T00:09:53.235+05:30",
- "previousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "receivedAt": "2023-03-09T00:09:51.292+05:30",
- "request_ip": "[::1]",
- "rudderId": "1703da0d-2472-459c-9bf0-4e7b66b4673a",
- "sentAt": "2023-03-09T00:09:53.235+05:30",
- "timestamp": "2023-03-09T00:09:51.291+05:30",
- "type": "alias",
- "userId": "12345"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "messageId": "adc7c2d0-0ebf-4593-b878-a0eb75932820",
- "originalTimestamp": "2023-03-09T00:09:53.235+05:30",
- "receivedAt": "2023-03-09T00:09:51.292+05:30",
- "request_ip": "[::1]",
- "rudderId": "1703da0d-2472-459c-9bf0-4e7b66b4673a",
- "sentAt": "2023-03-09T00:09:53.235+05:30",
- "timestamp": "2023-03-09T00:09:51.291+05:30",
- "type": "alias",
- "userId": "12345"
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/moengage_output.json b/test/__tests__/data/moengage_output.json
deleted file mode 100644
index 87559e5e6cc..00000000000
--- a/test/__tests__/data/moengage_output.json
+++ /dev/null
@@ -1,810 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "category": "some category",
- "originalArray[0].nested_field": "nested value",
- "originalArray[0].tags[0]": "tag_1",
- "originalArray[0].tags[1]": "tag_2",
- "originalArray[0].tags[2]": "tag_3",
- "originalArray[1].nested_field": "nested value",
- "originalArray[1].tags[0]": "tag_1",
- "originalArray[1].tags[1]": "tag_2",
- "originalArray[1].tags[2]": "tag_3",
- "originalArray[2].nested_field": "nested value",
- "originalArray[2].tags[0]": "tag_1",
- "originalArray[2].tags[1]": "tag_2",
- "originalArray[2].tags[2]": "tag_3",
- "originalArray[3].nested_field": "nested value",
- "originalArray[3].tags[0]": "tag_1",
- "originalArray[3].tags[1]": "tag_2",
- "originalArray[3].tags[2]": "tag_3",
- "originalArray[4].nested_field": "nested value",
- "originalArray[4].tags[0]": "tag_1",
- "originalArray[4].tags[1]": "tag_2",
- "originalArray[4].tags[2]": "tag_3",
- "originalArray[5].nested_field": "nested value",
- "originalArray[5].tags[0]": "tag_1",
- "originalArray[5].tags[1]": "tag_2",
- "originalArray[5].tags[2]": "tag_3",
- "originalArray[6].nested_field": "nested value",
- "originalArray[6].tags[0]": "tag_1",
- "originalArray[6].tags[1]": "tag_2",
- "originalArray[6].tags[2]": "tag_3",
- "originalArray[7].nested_field": "nested value",
- "originalArray[7].tags[0]": "tag_1",
- "originalArray[7].tags[1]": "tag_2",
- "originalArray[7].tags[2]": "tag_3",
- "originalArray[8].nested_field": "nested value",
- "originalArray[8].tags[0]": "tag_1",
- "originalArray[8].tags[1]": "tag_2",
- "originalArray[8].tags[2]": "tag_3",
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30",
- "user_timezone_offset": 32400,
- "platform": "web"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "plan": "Enterprise",
- "email": "rudderTest@gmail.com",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "CID": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "RC_DATE": "2021-03-22T12:36:34Z",
- "RC_NO_OF_SKUS": 1,
- "RC_PN_SKU_LIST": "9317"
- },
- "customer_id": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- [
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "plan": "Enterprise",
- "email": "rudderTest@gmail.com",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "device",
- "device_id": "7e32188a4dab669f",
- "attributes": {
- "model": "Android SDK built for x86",
- "push_id": "desuhere",
- "platform": "android",
- "app_version": "1.1.6"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/device/W0ZHNMPI2O4KHJ48ZILZACRA"
- }
- ],
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "plan": "Enterprise",
- "email": "rudderTest@gmail.com",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-02.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "plan": "Enterprise",
- "email": "rudderTest@gmail.com",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-03.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "statusCode": 400,
- "error": "The region is not valid"
- },
- {
- "statusCode": 400,
- "error": "Event type is required"
- },
- {
- "statusCode": 400,
- "error": "Event type gone is not supported"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "category": "some category",
- "originalArray[0].nested_field": "nested value",
- "originalArray[0].tags[0]": "tag_1",
- "originalArray[0].tags[1]": "tag_2",
- "originalArray[0].tags[2]": "tag_3",
- "originalArray[1].nested_field": "nested value",
- "originalArray[1].tags[0]": "tag_1",
- "originalArray[1].tags[1]": "tag_2",
- "originalArray[1].tags[2]": "tag_3",
- "originalArray[2].nested_field": "nested value",
- "originalArray[2].tags[0]": "tag_1",
- "originalArray[2].tags[1]": "tag_2",
- "originalArray[2].tags[2]": "tag_3",
- "originalArray[3].nested_field": "nested value",
- "originalArray[3].tags[0]": "tag_1",
- "originalArray[3].tags[1]": "tag_2",
- "originalArray[3].tags[2]": "tag_3",
- "originalArray[4].nested_field": "nested value",
- "originalArray[4].tags[0]": "tag_1",
- "originalArray[4].tags[1]": "tag_2",
- "originalArray[4].tags[2]": "tag_3",
- "originalArray[5].nested_field": "nested value",
- "originalArray[5].tags[0]": "tag_1",
- "originalArray[5].tags[1]": "tag_2",
- "originalArray[5].tags[2]": "tag_3",
- "originalArray[6].nested_field": "nested value",
- "originalArray[6].tags[0]": "tag_1",
- "originalArray[6].tags[1]": "tag_2",
- "originalArray[6].tags[2]": "tag_3",
- "originalArray[7].nested_field": "nested value",
- "originalArray[7].tags[0]": "tag_1",
- "originalArray[7].tags[1]": "tag_2",
- "originalArray[7].tags[2]": "tag_3",
- "originalArray[7].tags[3]": "tag_1",
- "originalArray[7].tags[4]": "tag_2",
- "originalArray[7].tags[5]": "tag_3",
- "originalArray[8].nested_field": "nested value",
- "originalArray[8].tags[0]": "tag_1",
- "originalArray[8].tags[1]": "tag_2",
- "originalArray[8].tags[2]": "tag_3",
- "originalArray[8].tags[3]": "tag_1",
- "originalArray[8].tags[4]": "tag_2",
- "originalArray[8].tags[5]": "tag_3",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30",
- "user_timezone_offset": 19800,
- "platform": "web"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "rudder123"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30",
- "platform": "web"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- [
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "plan": "Enterprise",
- "email": "rudderTest@gmail.com",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "type": "device",
- "device_id": "7e32188a4dab669f",
- "attributes": {
- "model": "AOSP on IA Emulator",
- "push_id": "desuhere",
- "platform": "iOS",
- "app_version": "1.1.6"
- },
- "customer_id": "rudder123"
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "headers": {
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/device/W0ZHNMPI2O4KHJ48ZILZACRA"
- }
- ],
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "device_id": "7e32188a4dab669f",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98,
- "originalArray[0].nested_field": "nested value",
- "originalArray[0].tags[0]": "tag_1",
- "originalArray[0].tags[1]": "tag_2",
- "originalArray[0].tags[2]": "tag_3",
- "originalArray[1].nested_field": "nested value",
- "originalArray[1].tags[0]": "tag_1",
- "originalArray[2].nested_field": "nested value",
- "category": "some category"
- },
- "platform": "iOS",
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "device_id": "7e32188a4dab669f",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98,
- "originalArray.key1.key11": "val11",
- "originalArray.key1.key12": "val12",
- "originalArray.key1.key13.k1": "v1",
- "originalArray.key1.key13.k2": "v2",
- "originalArray.key1.nested_field": "nested value",
- "originalArray.nested_field": "nested value",
- "originalArray.tags[0]": "tag_1",
- "originalArray.tags[1]": "tag_2",
- "originalArray.tags[2]": "tag_3",
- "originalArray.key1.key2": {},
- "originalArray.key1.key3": [],
- "category": "some category"
- },
- "platform": "iOS",
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "merge_data": [
- {
- "merged_user": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "retained_user": "12345"
- }
- ]
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "userId": "12345",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "version": "1",
- "endpoint": "https://api-01.moengage.com/v1/customer/merge?app_id=W0ZHNMPI2O4KHJ48ZILZACRA"
- },
- {
- "error": "Missing required value from \"previousId\""
- }
-]
diff --git a/test/__tests__/data/moengage_router_input.json b/test/__tests__/data/moengage_router_input.json
deleted file mode 100644
index 5adcf68eae3..00000000000
--- a/test/__tests__/data/moengage_router_input.json
+++ /dev/null
@@ -1,232 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "timezone": "Asia/Tokyo",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "event": "Order Completed",
- "integrations": {
- "All": true
- },
- "messageId": "a0adfab9-baf7-4e09-a2ce-bbe2844c324a",
- "originalTimestamp": "2020-10-16T08:10:12.782Z",
- "properties": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products": [
- {
- "brand": "",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/bacon-jam.jpg",
- "name": "Food/Drink",
- "position": 1,
- "price": 3,
- "product_id": "product-bacon-jam",
- "quantity": 2,
- "sku": "sku-1",
- "typeOfProduct": "Food",
- "url": "https://www.example.com/product/bacon-jam",
- "value": 6,
- "variant": "Extra topped"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/t-shirt.jpg",
- "name": "T-Shirt",
- "position": 2,
- "price": 12.99,
- "product_id": "product-t-shirt",
- "quantity": 1,
- "sku": "sku-2",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/t-shirt",
- "value": 12.99,
- "variant": "White"
- },
- {
- "brand": "Levis",
- "category": "Merch",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "name": "T-Shirt-on-offer",
- "position": 1,
- "price": 12.99,
- "product_id": "offer-t-shirt",
- "quantity": 1,
- "sku": "sku-3",
- "typeOfProduct": "Shirt",
- "url": "https://www.example.com/product/offer-t-shirt",
- "value": 12.99,
- "variant": "Black"
- }
- ],
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "receivedAt": "2020-10-16T13:40:12.792+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:10:12.783Z",
- "timestamp": "2020-10-16T13:40:12.791+05:30",
- "type": "track",
- "userId": "rudder123"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "anonymousId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.6"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.6"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/testing/script-test.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost:3243/testing/script-test.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "company": {
- "id": "abc123"
- },
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "email": "rudderTest@gmail.com",
- "name": "Rudder Test",
- "plan": "Enterprise"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "e108eb05-f6cd-4624-ba8c-568f2e2b3f92",
- "originalTimestamp": "2020-10-16T08:26:14.938Z",
- "receivedAt": "2020-10-16T13:56:14.945+05:30",
- "request_ip": "[::1]",
- "sentAt": "2020-10-16T08:26:14.939Z",
- "timestamp": "2020-10-16T13:56:14.944+05:30",
- "type": "identify",
- "userId": "rudder123"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/moengage_router_output.json b/test/__tests__/data/moengage_router_output.json
deleted file mode 100644
index 75874804eb9..00000000000
--- a/test/__tests__/data/moengage_router_output.json
+++ /dev/null
@@ -1,189 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/event/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "type": "event",
- "actions": [
- {
- "action": "Order Completed",
- "attributes": {
- "checkout_id": "what is checkout id here??",
- "coupon": "APPARELSALE",
- "currency": "GBP",
- "order_id": "transactionId",
- "products[0].brand": "",
- "products[0].category": "Merch",
- "products[0].currency": "GBP",
- "products[0].image_url": "https://www.example.com/product/bacon-jam.jpg",
- "products[0].name": "Food/Drink",
- "products[0].position": 1,
- "products[0].price": 3,
- "products[0].product_id": "product-bacon-jam",
- "products[0].quantity": 2,
- "products[0].sku": "sku-1",
- "products[0].typeOfProduct": "Food",
- "products[0].url": "https://www.example.com/product/bacon-jam",
- "products[0].value": 6,
- "products[0].variant": "Extra topped",
- "products[1].brand": "Levis",
- "products[1].category": "Merch",
- "products[1].currency": "GBP",
- "products[1].image_url": "https://www.example.com/product/t-shirt.jpg",
- "products[1].name": "T-Shirt",
- "products[1].position": 2,
- "products[1].price": 12.99,
- "products[1].product_id": "product-t-shirt",
- "products[1].quantity": 1,
- "products[1].sku": "sku-2",
- "products[1].typeOfProduct": "Shirt",
- "products[1].url": "https://www.example.com/product/t-shirt",
- "products[1].value": 12.99,
- "products[1].variant": "White",
- "products[2].brand": "Levis",
- "products[2].category": "Merch",
- "products[2].coupon": "APPARELSALE",
- "products[2].currency": "GBP",
- "products[2].image_url": "https://www.example.com/product/offer-t-shirt.jpg",
- "products[2].name": "T-Shirt-on-offer",
- "products[2].position": 1,
- "products[2].price": 12.99,
- "products[2].product_id": "offer-t-shirt",
- "products[2].quantity": 1,
- "products[2].sku": "sku-3",
- "products[2].typeOfProduct": "Shirt",
- "products[2].url": "https://www.example.com/product/offer-t-shirt",
- "products[2].value": 12.99,
- "products[2].variant": "Black",
- "revenue": 31.98,
- "shipping": 4,
- "value": 31.98
- },
- "platform": "web",
- "app_version": "1.1.6",
- "current_time": "2020-10-16T13:40:12.791+05:30",
- "user_timezone_offset": 32400
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api-01.moengage.com/v1/customer/W0ZHNMPI2O4KHJ48ZILZACRA",
- "headers": {
- "Content-Type": "application/json",
- "MOE-APPKEY": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "Authorization": "Basic VzBaSE5NUEkyTzRLSEo0OFpJTFpBQ1JBOmR1bW15QXBpS2V5"
- },
- "params": {},
- "body": {
- "JSON": {
- "customer_id": "rudder123",
- "type": "customer",
- "attributes": {
- "name": "Rudder Test",
- "email": "rudderTest@gmail.com",
- "created_time": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "company.id": "abc123",
- "createdAt": "Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)",
- "plan": "Enterprise"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "4eb021e9-a2af-4926-ae82-fe996d12f3c5"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "1iuTZs6eEZVMm6GjRBe6bNShaL3",
- "Name": "MoEngage Testing",
- "DestinationDefinition": {
- "ID": "1iu4802Tx27kNC4KNYYou6D8jzL",
- "Name": "MOENGAGE",
- "DisplayName": "MoEngage",
- "Config": {
- "destConfig": {
- "defaultConfig": ["apiId", "apiKey", "region"]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"]
- }
- },
- "Config": {
- "apiId": "W0ZHNMPI2O4KHJ48ZILZACRA",
- "apiKey": "dummyApiKey",
- "eventDelivery": false,
- "eventDeliveryTS": 1602757086384,
- "region": "US"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/monday.json b/test/__tests__/data/monday.json
deleted file mode 100644
index cec99959da7..00000000000
--- a/test/__tests__/data/monday.json
+++ /dev/null
@@ -1,1023 +0,0 @@
-[
- {
- "description": "Track call with empty columnToPropertyMapping",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, item_name: \"Task 1\", column_values: \"{}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.monday.com/v2",
- "files": {},
- "headers": {
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "Content-Type": "application/json"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track call with undefined columnToPropertyMapping",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, item_name: \"Task 1\", column_values: \"{}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.monday.com/v2",
- "files": {},
- "headers": {
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "Content-Type": "application/json"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Check Unsupported message type",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event type identify is not supported"
- }
- },
- {
- "description": "Check for empty message type",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event type is required"
- }
- },
- {
- "description": "Check for empty API Token",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "ApiToken is a required field"
- }
- },
- {
- "description": "Check for empty board Id",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "boardId is a required field"
- }
- },
- {
- "description": "Check for event name",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event is a required field and should be a string"
- }
- },
- {
- "description": "Track call with columnToPropertyMapping and with empty groupTitle",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.monday.com/v2",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih"
- },
- "params": {},
- "body": {
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, item_name: \"Task 1\", column_values: \"{\\\"status\\\":{\\\"label\\\":\\\"Done\\\"},\\\"email\\\":{\\\"email\\\":\\\"abc@email.com\\\",\\\"text\\\":\\\"emailId\\\"}}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call with columnToPropertyMapping and with groupTitle",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.monday.com/v2",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih"
- },
- "params": {},
- "body": {
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, group_id: group_title item_name: \"Task 1\", column_values: \"{\\\"status\\\":{\\\"label\\\":\\\"Done\\\"},\\\"email\\\":{\\\"email\\\":\\\"abc@email.com\\\",\\\"text\\\":\\\"emailId\\\"}}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Non-existing group title check",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next year",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Group Next year doesn't exist in the board"
- }
- },
- {
- "description": "check for item name",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Item name is required to create an item"
- }
- },
- {
- "description": "Track call with columnToPropertyMapping and with groupTitle with all supported columns",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- },
- {
- "from": "Checkbox",
- "to": "checked"
- },
- {
- "from": "Numbers",
- "to": "number"
- },
- {
- "from": "Name",
- "to": "textKey"
- },
- {
- "from": "Country",
- "to": "countryName"
- },
- {
- "from": "Location",
- "to": "address"
- },
- {
- "from": "Phone",
- "to": "phone"
- },
- {
- "from": "Rating",
- "to": "rating"
- },
- {
- "from": "Link",
- "to": "url"
- },
- {
- "from": "Long Text",
- "to": "description"
- },
- {
- "from": "World Clock",
- "to": "timezone"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId",
- "countryCode": "US",
- "latitude": "51.23",
- "longitude": "35.3",
- "rating": "3",
- "linkText": "websiteLink",
- "checked": "true",
- "number": "45",
- "textKey": "texting",
- "countryName": "Unites States",
- "countryShortName": "US",
- "address": "New York",
- "phone": "2626277272",
- "url": "demo.com",
- "description": "property description",
- "timezone": "America/New_York"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.monday.com/v2",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih"
- },
- "params": {},
- "body": {
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, group_id: group_title item_name: \"Task 1\", column_values: \"{\\\"status\\\":{\\\"label\\\":\\\"Done\\\"},\\\"email\\\":{\\\"email\\\":\\\"abc@email.com\\\",\\\"text\\\":\\\"emailId\\\"},\\\"checkbox\\\":{\\\"checked\\\":true},\\\"numbers\\\":\\\"45\\\",\\\"text\\\":\\\"texting\\\",\\\"country\\\":{\\\"countryName\\\":\\\"Unites States\\\",\\\"countryCode\\\":\\\"US\\\"},\\\"location\\\":{\\\"address\\\":\\\"New York\\\",\\\"lat\\\":\\\"51.23\\\",\\\"lng\\\":\\\"35.3\\\"},\\\"phone\\\":{\\\"phone\\\":\\\"2626277272\\\",\\\"countryShortName\\\":\\\"US\\\"},\\\"rating\\\":3,\\\"link\\\":{\\\"url\\\":\\\"demo.com\\\",\\\"text\\\":\\\"websiteLink\\\"},\\\"long_text\\\":{\\\"text\\\":\\\"property description\\\"},\\\"world_clock\\\":{\\\"timezone\\\":\\\"America/New_York\\\"}}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "check for allowed event name from UI",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event Discarded. To allow this event, add this in Allowlist"
- }
- },
- {
- "description": "check for deleted boards (configured boards are deleted)",
- "input": {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283934",
- "groupTitle": "Next year",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- {
- "from": "Email",
- "to": "emailId"
- }
- ],
- "whitelistedEvents": [
- {
- "eventName": "create an item"
- }
- ]
- }
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "The board with boardId 339283934 does not exist"
- }
- }
-]
diff --git a/test/__tests__/data/monday_router_input.json b/test/__tests__/data/monday_router_input.json
deleted file mode 100644
index 2770d23cb2c..00000000000
--- a/test/__tests__/data/monday_router_input.json
+++ /dev/null
@@ -1,111 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [{ "eventName": "create an item" }]
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- { "from": "Email", "to": "emailId" }
- ],
- "whitelistedEvents": [{ "eventName": "create an item" }]
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "event": "create an item",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "name": "Task 1",
- "status": "Done",
- "emailId": "abc@email.com",
- "emailText": "emailId"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- }
-]
diff --git a/test/__tests__/data/monday_router_output.json b/test/__tests__/data/monday_router_output.json
deleted file mode 100644
index b0beb35a108..00000000000
--- a/test/__tests__/data/monday_router_output.json
+++ /dev/null
@@ -1,84 +0,0 @@
-[
- {
- "batchedRequest": {
- "body": {
- "FORM": {},
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, item_name: \"Task 1\", column_values: \"{}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.monday.com/v2",
- "files": {},
- "headers": {
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "Content-Type": "application/json"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "",
- "columnToPropertyMapping": [],
- "whitelistedEvents": [{ "eventName": "create an item" }]
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.monday.com/v2",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih"
- },
- "params": {},
- "body": {
- "JSON": {
- "query": "mutation { create_item (board_id: 339283933, group_id: group_title item_name: \"Task 1\", column_values: \"{\\\"status\\\":{\\\"label\\\":\\\"Done\\\"},\\\"email\\\":{\\\"email\\\":\\\"abc@email.com\\\",\\\"text\\\":\\\"emailId\\\"}}\") {id}}"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiToken": "eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih",
- "boardId": "339283933",
- "groupTitle": "Next month",
- "columnToPropertyMapping": [
- {
- "from": "Status",
- "to": "status"
- },
- { "from": "Email", "to": "emailId" }
- ],
- "whitelistedEvents": [{ "eventName": "create an item" }]
- }
- }
- }
-]
diff --git a/test/__tests__/data/monetate_input.json b/test/__tests__/data/monetate_input.json
deleted file mode 100644
index 2b784e98ca7..00000000000
--- a/test/__tests__/data/monetate_input.json
+++ /dev/null
@@ -1,1860 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "product_id": "prodId"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product List Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "products": [
- {
- "product_id": 1
- },
- {
- "product_id": 2
- }
- ]
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Added",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "currency": "INR",
- "product_id": 1,
- "quantity": 1,
- "cart_value": 250,
- "sku": "sku"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Signed Up",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "plan": "trial",
- "source": "social"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "name": "Homepage",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "page": {
- "url": "https://example.com/homepage",
- "path": "/homepage",
- "referrer": "https://google.com"
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "screen",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "name": "Homepage",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "page": {
- "url": "https://example.com/homepage",
- "path": "/homepage",
- "referrer": "https://google.com",
- "category": "category"
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "page",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "page": {
- "url": "https://example.com/homepage",
- "referrer": "https://google.com"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "name": "Homepage",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "path": "/homepage",
- "referrer": "https://google.com",
- "url": "https://example.com/homepage"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "page",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Added",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "currency": "INR",
- "product_id": 1,
- "quantity": 1,
- "cart_value": 250,
- "page": {
- "url": "url",
- "path": "path",
- "category": "category",
- "breadcrumbs": "breadcrumbs"
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2020-09-03T05:48:50.813Z",
- "userId": "user101",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Bangalore",
- "name": "Manashi",
- "country": "India"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "ab1bb13b-037e-4269-b7ce-79262fbfd964",
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.813Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2020-09-03T05:48:50.815Z",
- "userId": "user101",
- "channel": "web",
- "context": {
- "ip": "11.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Bangalore",
- "name": "Manashi",
- "country": "India"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "0189ef26-5b64-47af-bd4a-f369155b74b0",
- "properties": {
- "cart_value": 30,
- "product_id": "pp10001900011",
- "user_actual_id": 12345
- },
- "anonymousId": "anony11111111",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.814Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "name": "Home Page",
- "type": "page",
- "sentAt": "2020-09-03T05:48:50.816Z",
- "userId": "user101",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://google.com",
- "path": "https://google.com",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "google"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Bangalore",
- "name": "Manashi",
- "country": "India"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "1d263f9b-d5e9-4a3b-ae4a-403129ef9b7c",
- "properties": {
- "url": "https://google.com",
- "name": "Home Page",
- "path": "https://google.com",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "google"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.816Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "name": "Login Page Name",
- "type": "page",
- "sentAt": "2020-09-03T05:48:50.820Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "22.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://geeks.com",
- "path": "https://geeks.com",
- "title": "LOGIN PAGE OF GEEKSFORGEEKS",
- "search": "",
- "referrer": "geeksforgeeks"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "userId": "user202",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "category": "Login Category",
- "messageId": "8073f133-14cc-4b6b-8043-9e5bb8d17698",
- "properties": {
- "url": "https://geeks.com",
- "name": "Login Page Name",
- "path": "https://geeks.com",
- "title": "LOGIN PAGE OF GEEKSFORGEEKS",
- "search": "",
- "category": "Login Category",
- "referrer": "geeksforgeeks"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.819Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Cart Viewed",
- "sentAt": "2020-09-03T05:48:50.820Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "22.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "21e78620-748a-4c1c-8570-385206fc61d6",
- "properties": {
- "products": [
- {
- "details": "Apple iphone 7",
- "currency": "INR",
- "quantity": "1",
- "product_id": "p2022222"
- },
- {
- "price": "90",
- "details": "Apple iphone 8",
- "quantity": "2",
- "product_id": "p201111"
- }
- ]
- },
- "anonymousId": "anony222222222",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.820Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "cutom event track call",
- "sentAt": "2020-09-03T05:48:50.821Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "11.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "userId": "user101",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "be896347-8e93-4e11-8d0a-67f08b33d969",
- "properties": {
- "details": "this is custom trackl call"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.821Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "name": "My orders Page Name",
- "type": "page",
- "sentAt": "2020-09-03T05:48:50.822Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "33.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "https://geeks.com",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "geeksforgeeks"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "e142299a-e819-4590-b99f-9f74d30d6354",
- "properties": {
- "url": "http://localhost:1111/monetateRudder.html",
- "name": "My orders Page Name",
- "path": "https://geeks.com",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "geeksforgeeks"
- },
- "anonymousId": "anony33333333",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.821Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Product Viewed",
- "sentAt": "2020-09-03T05:48:50.823Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "userId": "user101",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "5fc62a0d-835b-45c9-bfea-f2f5e57340db",
- "properties": {
- "sku": "123",
- "products": [
- {
- "product_id": "p1234678"
- }
- ],
- "product_id": "P303333333"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.822Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "name": "ONly page name",
- "type": "page",
- "sentAt": "2020-09-03T05:48:50.823Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "1aca7c68-148e-4ef3-a828-d89daf403632",
- "properties": {
- "url": "http://localhost:1111/monetateRudder.html",
- "name": "ONly page name",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.823Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Order Completed",
- "sentAt": "2020-09-03T05:48:50.824Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "11.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "moneateId": "Monetate10111111",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "19ef9a4e-fb49-42f2-8eba-b0bb7c934289",
- "properties": {
- "order_id": "orderCompleted101",
- "products": [
- {
- "sku": "sku 1 for order completed",
- "price": 8900,
- "currency": "INR",
- "quantity": 1,
- "product_id": "p2022222"
- },
- {
- "sku": "sku 2 for order completed",
- "price": 90,
- "quantity": 2,
- "product_id": "p201111"
- }
- ]
- },
- "anonymousId": "anony11111111",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.824Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Order Completed",
- "sentAt": "2020-09-03T05:48:50.824Z",
- "channel": "web",
- "context": {
- "ip": "11.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "moneateId": "Monetate10111111",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "19ef9a4e-fb49-42f2-8eba-b0bb7c934289",
- "properties": {
- "order_id": "orderCompleted101",
- "products": [
- {
- "sku": "sku 1 for order completed",
- "price": 8900,
- "currency": "INR",
- "quantity": 1,
- "product_id": "p2022222"
- },
- {
- "sku": "sku 2 for order completed",
- "price": 90,
- "quantity": 2,
- "product_id": "p201111"
- }
- ]
- },
- "anonymousId": "anony11111111",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.824Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "name": "ip check page name",
- "type": "page",
- "sentAt": "2020-09-03T05:48:50.825Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "https://facebook.com",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Sydney",
- "phone": "909077777",
- "country": "Australia"
- },
- "userId": "user606",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "category": "ip check page category",
- "messageId": "d6aeaf93-d28b-4a60-b8af-2376bebc4094",
- "properties": {
- "url": "https://facebook.com",
- "name": "ip check page name",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "category": "ip check page category",
- "referrer": "http://localhost:1111/"
- },
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.825Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2020-09-04T08:59:41.568Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Bangalore",
- "name": "Manashi",
- "email": "rudder@mysite.com",
- "country": "India"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "6debe993-9b1e-40ca-b2de-9054e86bcdd0",
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-04T08:59:41.567Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "sentAt": "2020-09-04T08:59:41.568Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "city": "Bangalore",
- "name": "Manashi",
- "email": "rudder@mysite.com",
- "country": "India"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "6debe993-9b1e-40ca-b2de-9054e86bcdd0",
- "anonymousId": "RudderEncrypt:U2FsdGVkX19Iqki3tnJjjeUzFWOegZjPY3iYQOPJJSQaTUxTWedGBeEOyFE/hfddGtmaZJnf/HBtc/EDoRjKEA==",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-04T08:59:41.567Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "density": 2
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "name": "Homepage",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "page": {
- "url": "https://example.com/homepage",
- "path": "/homepage",
- "referrer": "https://google.com"
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "screen",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Order Completed",
- "sentAt": "2020-09-03T05:48:50.824Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "11.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "moneateId": "Monetate10111111",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "19ef9a4e-fb49-42f2-8eba-b0bb7c934289",
- "properties": {
- "order_id": "orderCompleted101",
- "products": [
- {
- "sku": "sku 1 for order completed",
- "price": "8900",
- "currency": "INR",
- "quantity": "1"
- },
- {
- "sku": "sku 2 for order completed",
- "price": "90",
- "quantity": "2",
- "product_id": "p201111"
- }
- ]
- },
- "anonymousId": "anony11111111",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.824Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "type": "track",
- "event": "Cart Viewed",
- "sentAt": "2020-09-03T05:48:50.820Z",
- "userId": "user202",
- "channel": "web",
- "context": {
- "ip": "22.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.3",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html",
- "title": "MIxpanel Test",
- "search": "",
- "referrer": "http://localhost:1111/"
- },
- "locale": "en-GB",
- "screen": {
- "density": 2.5
- },
- "traits": {
- "email": "rudder@mysite.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.3"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- "messageId": "21e78620-748a-4c1c-8570-385206fc61d6",
- "properties": {
- "products": [
- {
- "details": "Apple iphone 7",
- "currency": "INR",
- "quantity": 1,
- "price": 2345,
- "product_id": "p2022222"
- },
- {
- "price": 90,
- "details": "Apple iphone 8",
- "quantity": 2,
- "product_id": "p201111"
- }
- ]
- },
- "anonymousId": "anony222222222",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2020-09-03T05:48:50.820Z"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Added",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "currency": "INR",
- "quantity": 1,
- "cart_value": 250,
- "sku": "sku"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product List Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "products": [
- {},
- {
- "product_id": 2
- }
- ]
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product List Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "products": {
- "product_id": "1"
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/monetate_output.json b/test/__tests__/data/monetate_output.json
deleted file mode 100644
index 82d5f8de22c..00000000000
--- a/test/__tests__/data/monetate_output.json
+++ /dev/null
@@ -1,741 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "monetateId": "1234",
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:ProductDetailView",
- "products": [
- {
- "productId": "prodId",
- "sku": ""
- }
- ]
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "'product_id' is a required field for Product Viewed"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "monetateId": "1234",
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:ProductThumbnailView",
- "products": ["1", "2"]
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "monetateId": "1234",
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:Cart",
- "cartLines": [
- {
- "pid": "1",
- "sku": "sku",
- "quantity": 1,
- "value": "250",
- "currency": "INR"
- }
- ]
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "https://example.com/homepage",
- "path": "/homepage",
- "categories": ["category"]
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "https://google.com"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "https://example.com/homepage"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "https://google.com"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:PageView",
- "url": "url",
- "path": "path",
- "categories": ["category"],
- "breadcrumbs": ["breadcrumbs"]
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:Cart",
- "cartLines": [
- {
- "pid": "1",
- "sku": "",
- "quantity": 1,
- "value": "250",
- "currency": "INR"
- }
- ]
- }
- ],
- "customerId": "newUser"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "Event type identify is not supported"
- },
- {
- "statusCode": 400,
- "error": "'product_id', 'quantity', 'cart_value' are required fields and 'quantity' should be a number for Product Added"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "https://google.com",
- "path": "https://google.com"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "google"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "https://geeks.com",
- "path": "https://geeks.com"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "geeksforgeeks"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "'quantity', 'price' and 'product_id' are required fields and 'quantity' and 'price' should be a number for all products for Cart Viewed"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "11.0.0.0"
- },
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:UserAgent",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- }
- ],
- "customerId": "user202",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "https://geeks.com"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "geeksforgeeks"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:UserAgent",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- {
- "eventType": "monetate:context:ProductDetailView",
- "products": [
- {
- "productId": "P303333333",
- "sku": "123"
- }
- ]
- }
- ],
- "customerId": "user202",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "http://localhost:1111/"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "11.0.0.0"
- },
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:UserAgent",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- {
- "eventType": "monetate:context:Purchase",
- "purchaseId": "orderCompleted101",
- "purchaseLines": [
- {
- "pid": "p2022222",
- "sku": "sku 1 for order completed",
- "quantity": 1,
- "value": "8900.00",
- "currency": "INR"
- },
- {
- "pid": "p201111",
- "sku": "sku 2 for order completed",
- "quantity": 2,
- "value": "180.00",
- "currency": "USD"
- }
- ]
- }
- ],
- "customerId": "user202",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "11.0.0.0"
- },
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:UserAgent",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- {
- "eventType": "monetate:context:Purchase",
- "purchaseId": "orderCompleted101",
- "purchaseLines": [
- {
- "pid": "p2022222",
- "sku": "sku 1 for order completed",
- "quantity": 1,
- "value": "8900.00",
- "currency": "INR"
- },
- {
- "pid": "p201111",
- "sku": "sku 2 for order completed",
- "quantity": 2,
- "value": "180.00",
- "currency": "USD"
- }
- ]
- }
- ],
- "deviceId": "anony11111111",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:PageView",
- "url": "https://facebook.com",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:Referrer",
- "referrer": "http://localhost:1111/"
- }
- ],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "Event type identify is not supported"
- },
- {
- "error": "Event type is required"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [],
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "'quantity', 'price' and 'product_id' are required fields and 'quantity' and 'price' should be a number for all products for Order Completed"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "22.0.0.0"
- },
- {
- "eventType": "monetate:context:PageView",
- "url": "http://localhost:1111/monetateRudder.html",
- "path": "/monetateRudder.html"
- },
- {
- "eventType": "monetate:context:UserAgent",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- },
- {
- "eventType": "monetate:context:Cart",
- "cartLines": [
- {
- "pid": "p2022222",
- "sku": "",
- "quantity": 1,
- "value": "2345.00",
- "currency": "INR"
- },
- {
- "pid": "p201111",
- "sku": "",
- "quantity": 2,
- "value": "180.00",
- "currency": "USD"
- }
- ]
- }
- ],
- "customerId": "user202",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "'product_id', 'quantity', 'cart_value' are required fields and 'quantity' should be a number for Product Added"
- },
- {
- "statusCode": 400,
- "error": "'product_id' is a required field for all products for Product List Viewed"
- },
- {
- "statusCode": 400,
- "error": "'product_id' is a required field for Product Viewed"
- },
- {
- "statusCode": 400,
- "error": "'products' missing or not array in Product List Viewed"
- }
-]
diff --git a/test/__tests__/data/monetate_router_input.json b/test/__tests__/data/monetate_router_input.json
deleted file mode 100644
index 0571fac96fa..00000000000
--- a/test/__tests__/data/monetate_router_input.json
+++ /dev/null
@@ -1,129 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "product_id": "prodId"
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "screen": {
- "height": 22,
- "width": 11
- },
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "0.0.0.0"
- },
- "traits": {
- "address": {
- "city": "Kol",
- "country": "Ind"
- }
- },
- "event": "Product List Viewed",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "monetateId": "1234",
- "products": [
- {
- "product_id": 1
- },
- {
- "product_id": 2
- }
- ]
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "userId": "newUser"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/monetate_router_output.json b/test/__tests__/data/monetate_router_output.json
deleted file mode 100644
index 14018aafc5e..00000000000
--- a/test/__tests__/data/monetate_router_output.json
+++ /dev/null
@@ -1,111 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "monetateId": "1234",
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:ProductDetailView",
- "products": [
- {
- "productId": "prodId",
- "sku": ""
- }
- ]
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://engine.monetate.net/api/engine/v1/decide/retailer",
- "headers": {
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "monetateId": "1234",
- "events": [
- {
- "eventType": "monetate:context:IpAddress",
- "ipAddress": "0.0.0.0"
- },
- {
- "eventType": "monetate:context:ScreenSize",
- "height": 22,
- "width": 11
- },
- {
- "eventType": "monetate:context:ProductThumbnailView",
- "products": ["1", "2"]
- }
- ],
- "customerId": "newUser",
- "channel": "channel"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "monetateChannel": "channel",
- "retailerShortName": "retailer",
- "apiKey": "api-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/new_relic_cdk_output.json b/test/__tests__/data/new_relic_cdk_output.json
deleted file mode 100644
index 9789b7d48e3..00000000000
--- a/test/__tests__/data/new_relic_cdk_output.json
+++ /dev/null
@@ -1,204 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "first",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "second",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": "test",
- "eventType": "rudderstack"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudder-testing"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "first",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "second",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": "test",
- "eventType": "rudderstack"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "eventType": "rudder-testing"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "anonymousId": "anon-id-new",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "message type identify is not supported"
- }
-]
diff --git a/test/__tests__/data/new_relic_input.json b/test/__tests__/data/new_relic_input.json
deleted file mode 100644
index 16bd6018161..00000000000
--- a/test/__tests__/data/new_relic_input.json
+++ /dev/null
@@ -1,418 +0,0 @@
-[
- {
- "message": {
- "event": "first",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": true,
- "sendUserIdanonymousId": true,
- "dataCenter": "us"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "second",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": "test"
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": false,
- "sendUserIdanonymousId": false,
- "dataCenter": "us"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "test",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "rudder-testing",
- "sendDeviceContext": false,
- "sendUserIdanonymousId": false,
- "dataCenter": "us"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "first",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": true,
- "sendUserIdanonymousId": true,
- "dataCenter": "eu"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "second",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": "test"
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": false,
- "sendUserIdanonymousId": false,
-
- "dataCenter": "eu"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "test",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "rudder-testing",
- "sendDeviceContext": false,
- "sendUserIdanonymousId": true,
- "dataCenter": "eu"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "test",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": true,
- "sendUserIdanonymousId": true,
- "dataCenter": "us"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "first",
- "userId": "identified user id",
- "type": "identify",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "traits": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-02-02T00:23:09.544Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "accountId": "12345",
- "insertKey": "11111122702j2a2U2K2C7H",
- "customEventType": "",
- "sendDeviceContext": true,
- "sendUserIdanonymousId": true,
- "dataCenter": "us"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/new_relic_output.json b/test/__tests__/data/new_relic_output.json
deleted file mode 100644
index 0ca0a6bdbd5..00000000000
--- a/test/__tests__/data/new_relic_output.json
+++ /dev/null
@@ -1,204 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "first",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "second",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": "test",
- "eventType": "rudderstack"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudder-testing"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "first",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "second",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": "test",
- "eventType": "rudderstack"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.eu01.nr-data.net/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "userId": "identified user id",
- "anonymousId": "anon-id-new",
- "eventType": "rudder-testing"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://insights-collector.newrelic.com/v1/accounts/12345/events",
- "headers": {
- "Api-Key": "11111122702j2a2U2K2C7H",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "test",
- "timestamp": 1580602989,
- "abc": "123",
- "anonymousId": "anon-id-new",
- "key.abc": 123,
- "array[0].abc": 123,
- "array[1].def": 123,
- "eventType": "rudderstack",
- "traits.trait1": "new-val",
- "ip": "14.5.67.21",
- "library.name": "http"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "message type \"identify\" not supported for \"new_relic\""
- }
-]
diff --git a/test/__tests__/data/ometria_batch_input.json b/test/__tests__/data/ometria_batch_input.json
deleted file mode 100644
index 982b50607b2..00000000000
--- a/test/__tests__/data/ometria_batch_input.json
+++ /dev/null
@@ -1,219 +0,0 @@
-[
- {
- "message": {
- "type": "identify",
- "sentAt": "2021-10-25T09:40:08.880Z",
- "userId": "userId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.1",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Test",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "http://127.0.0.1:5500/index.html",
- "initial_referrer": "http://127.0.0.1:5500/index.html",
- "referring_domain": "127.0.0.1:5500",
- "initial_referring_domain": "127.0.0.1:5500"
- },
- "locale": "en-GB",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 1440,
- "innerHeight": 335
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one",
- "field1": "val1",
- "ip": "0.0.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.1"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36"
- },
- "rudderId": "e3e907f1-f79a-444b-b91d-da47488f8273",
- "messageId": "8cdd3d2e-5e07-42ec-abdc-9b6bd4333840",
- "timestamp": "2021-10-25T15:10:08.888+05:30",
- "receivedAt": "2021-10-25T15:10:08.889+05:30",
- "request_ip": "[::1]",
- "anonymousId": "7138f7d9-5dd2-4337-805d-ca17be59dc8e",
- "integrations": {
- "Ometria": {
- "listingId": "test1"
- }
- },
- "originalTimestamp": "2021-10-25T09:40:08.879Z"
- },
- "metadata": { "jobId": 1 },
- "destination": {
- "ID": "1zzHtStW2ZPlullmz6L7DGnmk9V",
- "Name": "ometria-dev",
- "DestinationDefinition": {
- "ID": "1zgVZhcj1Tij4qlKg7B1Jp16IrH",
- "Name": "OMETRIA",
- "DisplayName": "Ometria",
- "Config": {
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "supportedMessageTypes": ["identify", "track"],
- "destConfig": {
- "defaultConfig": ["apiKey", "marketingOptin", "allowMarketing", "allowTransactional"]
- },
- "secretKeys": ["apiKey"]
- },
- "ResponseRules": {}
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2021-10-25T09:40:08.880Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.1",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Test",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "http://127.0.0.1:5500/index.html",
- "initial_referrer": "http://127.0.0.1:5500/index.html",
- "referring_domain": "127.0.0.1:5500",
- "initial_referring_domain": "127.0.0.1:5500"
- },
- "locale": "en-GB",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 1440,
- "innerHeight": 335
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one",
- "field1": "val1",
- "ip": "0.0.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.1"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36"
- },
- "rudderId": "e3e907f1-f79a-444b-b91d-da47488f8273",
- "messageId": "8cdd3d2e-5e07-42ec-abdc-9b6bd4333840",
- "timestamp": "2021-10-25T15:10:08.888+05:30",
- "receivedAt": "2021-10-25T15:10:08.889+05:30",
- "request_ip": "[::1]",
- "integrations": {
- "Ometria": {
- "listingId": "updatedId1",
- "allowMarketing": true
- }
- },
- "originalTimestamp": "2021-10-25T09:40:08.879Z"
- },
- "metadata": { "jobId": 2 },
- "destination": {
- "ID": "1zzHtStW2ZPlullmz6L7DGnmk9V",
- "Name": "ometria-dev",
- "DestinationDefinition": {
- "ID": "1zgVZhcj1Tij4qlKg7B1Jp16IrH",
- "Name": "OMETRIA",
- "DisplayName": "Ometria",
- "Config": {
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "supportedMessageTypes": ["identify", "track"],
- "destConfig": {
- "defaultConfig": ["apiKey", "marketingOptin", "allowMarketing", "allowTransactional"]
- },
- "secretKeys": ["apiKey"]
- },
- "ResponseRules": {}
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/ometria_batch_output.json b/test/__tests__/data/ometria_batch_output.json
deleted file mode 100644
index f93e662d26a..00000000000
--- a/test/__tests__/data/ometria_batch_output.json
+++ /dev/null
@@ -1,75 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": {
- "X-Ometria-Auth": "dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"test1\",\"customer_id\":\"userId1\",\"firstname\":\"test\",\"lastname\":\"one\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\",\"ip\":\"0.0.0.0\"},\"marketing_optin\":\"EXPLICITLY_OPTEDOUT\",\"channels\":{\"sms\":{\"allow_marketing\":false,\"allow_transactional\":false}}},{\"email\":\"testone@gmail.com\",\"id\":\"updatedId1\",\"customer_id\":\"userId1\",\"firstname\":\"test\",\"lastname\":\"one\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\",\"ip\":\"0.0.0.0\"},\"marketing_optin\":\"EXPLICITLY_OPTEDOUT\",\"channels\":{\"sms\":{\"allow_marketing\":true,\"allow_transactional\":false}}}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- },
- {
- "jobId": 2
- }
- ],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "1zzHtStW2ZPlullmz6L7DGnmk9V",
- "Name": "ometria-dev",
- "DestinationDefinition": {
- "ID": "1zgVZhcj1Tij4qlKg7B1Jp16IrH",
- "Name": "OMETRIA",
- "DisplayName": "Ometria",
- "Config": {
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "supportedMessageTypes": ["identify", "track"],
- "destConfig": {
- "defaultConfig": ["apiKey", "marketingOptin", "allowMarketing", "allowTransactional"]
- },
- "secretKeys": ["apiKey"]
- },
- "ResponseRules": {}
- },
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/data/ometria_input.json b/test/__tests__/data/ometria_input.json
deleted file mode 100644
index de03a585f8d..00000000000
--- a/test/__tests__/data/ometria_input.json
+++ /dev/null
@@ -1,780 +0,0 @@
-[
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one",
- "field1": "val1",
- "ip": "0.0.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "integrations": {
- "Ometria": {
- "listingId": "test1"
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one",
- "field1": "val1",
- "ip": "0.0.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "integrations": {
- "Ometria": {
- "listingId": "updatedId1",
- "allowMarketing": true
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "name": "test one two",
- "field1": "val1",
- "ip": "0.0.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "integrations": {
- "Ometria": {
- "listingId": "test1"
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "EXPLICITLY_OPTEDOUT"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "name": "test one",
- "field1": "val1",
- "marketinOptin": "NOT_SPECIFIED",
- "phoneNumber": "+911234567890",
- "channels": {
- "sms": {}
- }
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "integrations": {
- "Ometria": {
- "listingId": "test1"
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "NOT_SPECIFIED"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "listingId": "test1",
- "email": "testone@gmail.com",
- "name": "test one",
- "field1": "val1",
- "marketinOptin": "NOT_SPECIFIED",
- "phoneNumber": "+911234567890",
- "channels": {
- "sms": {}
- }
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "integrations": {
- "Ometria": {
- "listingId": "test1",
- "allowMarketing": true,
- "allowTransactional": true
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "allowMarketing": false,
- "allowTransactional": false,
- "marketingOptin": "NOT_SPECIFIED"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "event name",
- "properties": {
- "event_id": "eventId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "field1": "val1"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "order completed",
- "properties": {
- "order_id": "orderId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "grand_total": 1000,
- "currency": "INR",
- "field1": "val1"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "order completed",
- "properties": {
- "order_id": "orderId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "grand_total": 1000,
- "currency": "INR",
- "field1": "val1",
- "products": [
- {
- "product_id": "prod123",
- "quantity": 4,
- "subtotal": 10
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "order completed",
- "properties": {
- "order_id": "orderId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "grand_total": 1000,
- "currency": "INR",
- "field1": "val1",
- "products": [
- {
- "product_id": "prod123",
- "quantity": 4,
- "subtotal": 10,
- "variant_options": [
- {
- "type": "size",
- "id": "newid",
- "label": "5"
- }
- ]
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "order completed",
- "properties": {
- "order_id": "orderId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "grand_total": 1000,
- "currency": "INR",
- "field1": "val1",
- "billing_address": "Ba",
- "shipping_address": "Sa",
- "products": [
- {
- "product_id": "prod123",
- "quantity": 4,
- "subtotal": 10,
- "variant_options": [
- {
- "type": "size",
- "id": "newid",
- "label": "5"
- }
- ]
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "testone@gmail.com",
- "firstName": "test",
- "lastName": "one"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/ometria",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/ometria",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "type": "track",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "userId1",
- "event": "order completed",
- "properties": {
- "order_id": "orderId1",
- "timestamp": "2017-05-01T14:00:00Z",
- "grand_total": 1000,
- "currency": "INR",
- "field1": "val1",
- "shipping_address": {
- "city": "Kolkata",
- "state": "West Bengal",
- "postcode": "700001",
- "country_code": "IN"
- },
- "products": [
- {
- "product_id": "prod123",
- "quantity": 4,
- "subtotal": 10,
- "variant_options": [
- {
- "type": "size",
- "id": "newid",
- "label": "5"
- }
- ]
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- }
- }
-]
diff --git a/test/__tests__/data/ometria_output.json b/test/__tests__/data/ometria_output.json
deleted file mode 100644
index cd41f44d243..00000000000
--- a/test/__tests__/data/ometria_output.json
+++ /dev/null
@@ -1,189 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"test1\",\"customer_id\":\"userId1\",\"firstname\":\"test\",\"lastname\":\"one\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\",\"ip\":\"0.0.0.0\"},\"marketing_optin\":\"EXPLICITLY_OPTEDOUT\",\"channels\":{\"sms\":{\"allow_marketing\":false,\"allow_transactional\":false}}}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"updatedId1\",\"customer_id\":\"userId1\",\"firstname\":\"test\",\"lastname\":\"one\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\",\"ip\":\"0.0.0.0\"},\"marketing_optin\":\"EXPLICITLY_OPTEDOUT\",\"channels\":{\"sms\":{\"allow_marketing\":true,\"allow_transactional\":false}}}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"test1\",\"customer_id\":\"userId1\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\",\"ip\":\"0.0.0.0\"},\"marketing_optin\":\"EXPLICITLY_OPTEDOUT\",\"channels\":{\"sms\":{\"allow_marketing\":false,\"allow_transactional\":false}},\"firstname\":\"test\",\"middlename\":\"one\",\"lastname\":\"two\"}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"test1\",\"phone_number\":\"+911234567890\",\"customer_id\":\"userId1\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\"},\"marketing_optin\":\"NOT_SPECIFIED\",\"channels\":{\"sms\":{\"allow_marketing\":false,\"allow_transactional\":false}},\"firstname\":\"test\",\"lastname\":\"one\"}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"email\":\"testone@gmail.com\",\"id\":\"test1\",\"phone_number\":\"+911234567890\",\"customer_id\":\"userId1\",\"@type\":\"contact\",\"properties\":{\"field1\":\"val1\"},\"marketing_optin\":\"NOT_SPECIFIED\",\"channels\":{\"sms\":{\"allow_marketing\":true,\"allow_transactional\":true}},\"firstname\":\"test\",\"lastname\":\"one\"}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"eventId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"identity_email\":\"testone@gmail.com\",\"identity_account_id\":\"userId1\",\"@type\":\"custom_event\",\"event_type\":\"event name\",\"properties\":{\"field1\":\"val1\"}}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"orderId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"grand_total\":1000,\"currency\":\"INR\",\"ip_address\":\"0.0.0.0\",\"customer\":{\"id\":\"userId1\",\"email\":\"testone@gmail.com\",\"firstname\":\"test\",\"lastname\":\"one\"},\"@type\":\"order\",\"status\":\"complete\",\"is_valid\":true,\"properties\":{\"field1\":\"val1\"}}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"orderId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"grand_total\":1000,\"currency\":\"INR\",\"ip_address\":\"0.0.0.0\",\"customer\":{\"id\":\"userId1\",\"email\":\"testone@gmail.com\",\"firstname\":\"test\",\"lastname\":\"one\"},\"@type\":\"order\",\"status\":\"complete\",\"is_valid\":true,\"properties\":{\"field1\":\"val1\"},\"lineitems\":[{\"product_id\":\"prod123\",\"quantity\":4,\"subtotal\":10}]}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"orderId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"grand_total\":1000,\"currency\":\"INR\",\"ip_address\":\"0.0.0.0\",\"customer\":{\"id\":\"userId1\",\"email\":\"testone@gmail.com\",\"firstname\":\"test\",\"lastname\":\"one\"},\"@type\":\"order\",\"status\":\"complete\",\"is_valid\":true,\"properties\":{\"field1\":\"val1\"},\"lineitems\":[{\"product_id\":\"prod123\",\"quantity\":4,\"subtotal\":10,\"variant_options\":[{\"id\":\"newid\",\"type\":\"size\",\"label\":\"5\"}]}]}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"orderId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"grand_total\":1000,\"currency\":\"INR\",\"ip_address\":\"0.0.0.0\",\"customer\":{\"id\":\"userId1\",\"email\":\"testone@gmail.com\",\"firstname\":\"test\",\"lastname\":\"one\"},\"@type\":\"order\",\"status\":\"complete\",\"is_valid\":true,\"properties\":{\"field1\":\"val1\"},\"lineitems\":[{\"product_id\":\"prod123\",\"quantity\":4,\"subtotal\":10,\"variant_options\":[{\"id\":\"newid\",\"type\":\"size\",\"label\":\"5\"}]}]}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.ometria.com/v2/push",
- "headers": { "X-Ometria-Auth": "dummyApiKey" },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {
- "batch": "[{\"id\":\"orderId1\",\"timestamp\":\"2017-05-01T14:00:00Z\",\"grand_total\":1000,\"currency\":\"INR\",\"ip_address\":\"0.0.0.0\",\"shipping_address\":{\"city\":\"Kolkata\",\"state\":\"West Bengal\",\"country_code\":\"IN\",\"postcode\":\"700001\"},\"customer\":{\"id\":\"userId1\",\"email\":\"testone@gmail.com\",\"firstname\":\"test\",\"lastname\":\"one\"},\"@type\":\"order\",\"status\":\"complete\",\"is_valid\":true,\"properties\":{\"field1\":\"val1\"},\"lineitems\":[{\"product_id\":\"prod123\",\"quantity\":4,\"subtotal\":10,\"variant_options\":[{\"id\":\"newid\",\"type\":\"size\",\"label\":\"5\"}]}]}]"
- },
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/one_signal.json b/test/__tests__/data/one_signal.json
deleted file mode 100644
index da699ec0ef8..00000000000
--- a/test/__tests__/data/one_signal.json
+++ /dev/null
@@ -1,1431 +0,0 @@
-[
- {
- "description": "Identify call for creating new device (phone and playerId is not available in the payload). Integrations object is also not available.",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": true,
- "smsDeviceType": true,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "ios"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 11,
- "identifier": "test@rudderstack.com",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 8,
- "identifier": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Identify call for creating new device (playerId is not available in the payload). Integrations object is also not available. Email and phone both are available in the payload.",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": true,
- "smsDeviceType": true,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "ios"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 11,
- "identifier": "test@rudderstack.com",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 14,
- "identifier": "+917836362334",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 8,
- "identifier": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Identify call for creating a new device(deviceType and identifier is present in the integrations object, playerId not present)",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "ios"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "integrations": {
- "one_signal": {
- "deviceType": "5",
- "identifier": "random_id"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 5,
- "identifier": "random_id",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Identify call for creating a new device(channel is mobile and integrations object is not present, playerId not present)",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "mobile",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "android"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 1,
- "identifier": "token",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ]
- },
- {
- "description": "Identify call for Editing a device using playerId",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "mobile",
- "context": {
- "externalId": [
- {
- "type": "playerId",
- "id": "85be324d-6dab-4293-ad1f-42199d4c455b"
- }
- ],
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "Raymonds",
- "price": "14000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "android"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://onesignal.com/api/v1/players/85be324d-6dab-4293-ad1f-42199d4c455b",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "tags": {
- "brand": "Raymonds",
- "price": "14000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call for updating tags using external_user_id",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "brand": "Zara",
- "price": "12000",
- "add_to_Cart": true
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- }
- },
- {
- "description": "Track call for updating tags using external_user_id (with concatenated event name)",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "add_to_Cart": true,
- "add_to_Cart_brand": "Zara",
- "add_to_Cart_price": "12000"
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- }
- },
- {
- "description": "Track call with tags key having empty value( Output Behaviour: Those keys will be deleted)",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "",
- "price": ""
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "add_to_Cart": true,
- "add_to_Cart_brand": "",
- "add_to_Cart_price": ""
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- }
- },
- {
- "description": "Track call having no allowed properties)",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "zara",
- "price": "10000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "add_to_Cart": true
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- }
- },
- {
- "description": "Group call ",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "type": "group",
- "groupId": "players111",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "",
- "price": "10000"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "brand": "",
- "price": "10000",
- "groupId": "players111"
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- }
- },
- {
- "description": "Check for appId",
- "input": {
- "destination": {
- "Config": {
- "appId": "",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "type": "group",
- "groupId": "players111",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "",
- "price": "10000"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "appId is a required field"
- }
- },
- {
- "description": "Check for message type",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "type": "page",
- "groupId": "players111",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "",
- "price": "10000"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Message type page is not supported"
- }
- },
- {
- "description": "Validating deviceType",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "phone": "+917836362334",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "ios"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "integrations": {
- "one_signal": {
- "deviceType": "15",
- "identifier": "random_id"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "device_type 15 is not a valid device_type"
- }
- },
- {
- "description": "check for Message type not present",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "event": "add_to_Cart",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event type is required"
- }
- },
- {
- "description": "Check for event name in the track call",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "Event is not present in the input payloads"
- }
- },
- {
- "description": "Check for groupId ",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": true,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "type": "group",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "",
- "price": "10000"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "groupId is required for group events"
- }
- },
- {
- "description": "Check for user Id (required field to update the device) for track call",
- "input": {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- "output": {
- "error": "userId is required for track events/updating a device"
- }
- }
-]
diff --git a/test/__tests__/data/one_signal_router_input.json b/test/__tests__/data/one_signal_router_input.json
deleted file mode 100644
index 3b69aaadd75..00000000000
--- a/test/__tests__/data/one_signal_router_input.json
+++ /dev/null
@@ -1,118 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": true,
- "smsDeviceType": true,
- "eventAsTags": false,
- "allowedProperties": []
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": "1.12.3"
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "traits": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27"
- },
- "locale": "en-US",
- "device": {
- "token": "token",
- "id": "id",
- "type": "ios"
- },
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- },
- {
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "event": "add_to_Cart",
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "userId": "user@27",
- "channel": "web",
- "properties": {
- "brand": "Zara",
- "price": "12000"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.11",
- "namespace": "com.rudderlabs.javascript"
- },
- "locale": "en-US",
- "screen": {
- "density": 2
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.11"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0"
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- }
- }
-]
diff --git a/test/__tests__/data/one_signal_router_output.json b/test/__tests__/data/one_signal_router_output.json
deleted file mode 100644
index bda0c36336d..00000000000
--- a/test/__tests__/data/one_signal_router_output.json
+++ /dev/null
@@ -1,141 +0,0 @@
-[
- {
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 11,
- "identifier": "test@rudderstack.com",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://onesignal.com/api/v1/players",
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "device_os": "1.12.3",
- "laguage": "en-US",
- "created_at": 1609693373,
- "last_active": 1609693373,
- "external_user_id": "user@27",
- "app_id": "random-818c-4a28-b98e-6cd8a994eb22",
- "device_type": 8,
- "identifier": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "tags": {
- "brand": "John Players",
- "price": "15000",
- "firstName": "Test",
- "email": "test@rudderstack.com",
- "userId": "user@27",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": true,
- "smsDeviceType": true,
- "eventAsTags": false,
- "allowedProperties": []
- }
- }
- },
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "tags": {
- "brand": "Zara",
- "price": "12000",
- "add_to_Cart": true
- }
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Accept": "application/json",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "appId": "random-818c-4a28-b98e-6cd8a994eb22",
- "emailDeviceType": false,
- "smsDeviceType": false,
- "eventAsTags": false,
- "allowedProperties": [
- {
- "propertyName": "brand"
- },
- {
- "propertyName": "price"
- }
- ]
- }
- }
- }
-]
diff --git a/test/__tests__/data/pagerduty.json b/test/__tests__/data/pagerduty.json
deleted file mode 100644
index fdc97ea3175..00000000000
--- a/test/__tests__/data/pagerduty.json
+++ /dev/null
@@ -1,569 +0,0 @@
-[
- {
- "description": "No Message type",
- "input": {
- "message": {
- "sentAt": "2022-10-11T13:10:54.877+05:30",
- "userId": "user@45",
- "rudderId": "caae04c5-959f-467b-a293-86f6c62d59e6",
- "messageId": "b6ce7f31-5d76-4240-94d2-3eea020ef791",
- "timestamp": "2022-10-11T13:10:52.137+05:30",
- "receivedAt": "2022-10-11T13:10:52.138+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-10-11T13:10:54.877+05:30"
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac"
- }
- }
- },
- "output": {
- "error": "Event type is required"
- }
- },
- {
- "description": "Routing Key is not present",
- "input": {
- "message": {
- "sentAt": "2022-10-11T13:10:54.877+05:30",
- "userId": "user@45",
- "context": {},
- "rudderId": "caae04c5-959f-467b-a293-86f6c62d59e6",
- "messageId": "b6ce7f31-5d76-4240-94d2-3eea020ef791",
- "timestamp": "2022-10-11T13:10:52.137+05:30",
- "receivedAt": "2022-10-11T13:10:52.138+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-10-11T13:10:54.877+05:30"
- },
- "destination": {
- "Config": {}
- }
- },
- "output": {
- "error": "Routing Key Is Required"
- }
- },
- {
- "description": "Unsupported Event type",
- "input": {
- "message": {
- "type": "alias",
- "sentAt": "2022-10-11T13:10:54.877+05:30",
- "userId": "user@45",
- "context": {},
- "rudderId": "caae04c5-959f-467b-a293-86f6c62d59e6",
- "messageId": "b6ce7f31-5d76-4240-94d2-3eea020ef791",
- "timestamp": "2022-10-11T13:10:52.137+05:30",
- "receivedAt": "2022-10-11T13:10:52.138+05:30",
- "request_ip": "[::1]",
- "originalTimestamp": "2022-10-11T13:10:54.877+05:30"
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac"
- }
- }
- },
- "output": {
- "error": "Event type alias is not supported"
- }
- },
- {
- "description": "event name is not present",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {}
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac"
- }
- }
- },
- "output": {
- "error": "Event name is required"
- }
- },
- {
- "description": "Parameter source is not present",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "Event name is required",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e"
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac"
- }
- }
- },
- "output": {
- "error": "Missing required value from \"properties.source\""
- }
- },
- {
- "description": "dedup_key is not present",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "Event name is required",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "action": "resolve"
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "error": "dedup_key required for resolve events"
- }
- },
- {
- "description": "Timestamp older then 90 days",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "originalTimestamp": "2021-12-20T10:26:33.451Z",
- "properties": {
- "action": "trigger",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "error": "Events must be sent within ninety days of their occurrence"
- }
- },
- {
- "description": "Trigger event",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "action": "trigger",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "links": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- }
- ],
- "images": [
- {
- "alt": "first image",
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg"
- },
- {
- "alt": "second image",
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1"
- }
- ],
- "payload": {
- "class": "connection settings",
- "group": "destination",
- "source": "rudder-webapp",
- "summary": "apiSecret is not present",
- "severity": "critical",
- "component": "ui",
- "custom_details": {
- "ping time": "1500ms",
- "load avg": 0.75
- }
- },
- "dedup_key": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "routing_key": "9552b56325dc490bd0139be85f7b8fac",
- "event_action": "trigger"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/enqueue"
- }
- },
- {
- "description": "Acknowledge event",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "action": "acknowledge",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "dedup_key": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "routing_key": "9552b56325dc490bd0139be85f7b8fac",
- "event_action": "acknowledge"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/enqueue"
- }
- },
- {
- "description": "Resolve event",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "action": "resolve",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "dedup_key": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "routing_key": "9552b56325dc490bd0139be85f7b8fac",
- "event_action": "resolve"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/enqueue"
- }
- },
- {
- "description": "Change event",
- "input": {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "Github CI/CD Triggered",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "source": "rudder-webapp",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- },
- "integrations": {
- "pagerduty": {
- "type": "changeEvent"
- }
- }
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "links": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- }
- ],
- "images": [
- {
- "alt": "first image",
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg"
- },
- {
- "alt": "second image",
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1"
- }
- ],
- "payload": {
- "source": "rudder-webapp",
- "summary": "Github CI/CD Triggered",
- "custom_details": {
- "load avg": 0.75,
- "ping time": "1500ms"
- }
- },
- "routing_key": "9552b56325dc490bd0139be85f7b8fac"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/change/enqueue"
- }
- }
-]
diff --git a/test/__tests__/data/pagerduty_router.json b/test/__tests__/data/pagerduty_router.json
deleted file mode 100644
index bec666beffa..00000000000
--- a/test/__tests__/data/pagerduty_router.json
+++ /dev/null
@@ -1,286 +0,0 @@
-[
- {
- "description": "Router Test Case",
- "input": [
- {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "Github CI/CD Triggered",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "source": "rudder-webapp",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- },
- "integrations": {
- "pagerduty": {
- "type": "changeEvent"
- }
- }
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "properties": {
- "action": "acknowledge",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "type": "track",
- "event": "apiSecret is not present",
- "messageId": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "userId": "user@45",
- "originalTimestamp": "2021-12-20T10:26:33.451Z",
- "properties": {
- "action": "trigger",
- "dedupKey": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "severity": "critical",
- "component": "ui",
- "source": "rudder-webapp",
- "group": "destination",
- "class": "connection settings",
- "customDetails": {
- "ping time": "1500ms",
- "load avg": 0.75
- },
- "imageURLs": [
- {
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg",
- "alt": "first image"
- },
- {
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1",
- "alt": "second image"
- },
- {
- "alt": "third image"
- }
- ],
- "linkURLs": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- },
- {
- "text": "Destructure Error"
- }
- ]
- }
- },
- "metadata": {
- "jobId": 3
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- }
- ],
- "output": [
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "links": [
- {
- "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error",
- "text": "Js Object Error"
- },
- {
- "href": "https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack",
- "text": "Stack Overflow Error"
- }
- ],
- "images": [
- {
- "alt": "first image",
- "src": "https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg"
- },
- {
- "alt": "second image",
- "src": "https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1"
- }
- ],
- "payload": {
- "source": "rudder-webapp",
- "summary": "Github CI/CD Triggered",
- "custom_details": {
- "load avg": 0.75,
- "ping time": "1500ms"
- }
- },
- "routing_key": "9552b56325dc490bd0139be85f7b8fac"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/change/enqueue"
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- },
- "metadata": [{ "jobId": 1 }],
- "statusCode": 200
- },
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "dedup_key": "9116b734-7e6b-4497-ab51-c16744d4487e",
- "routing_key": "9552b56325dc490bd0139be85f7b8fac",
- "event_action": "acknowledge"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://events.pagerduty.com/v2/enqueue"
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- },
- "metadata": [{ "jobId": 2 }],
- "statusCode": 200
- },
- {
- "batched": false,
- "error": "Events must be sent within ninety days of their occurrence",
- "metadata": [{ "jobId": 3 }],
- "statusCode": 400,
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- },
- "destination": {
- "Config": {
- "routingKey": "9552b56325dc490bd0139be85f7b8fac",
- "dedupKeyFieldIdentifier": "properties.dedupKey"
- }
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/pardot_router_input.json b/test/__tests__/data/pardot_router_input.json
deleted file mode 100644
index 5db25245a70..00000000000
--- a/test/__tests__/data/pardot_router_input.json
+++ /dev/null
@@ -1,596 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- },
- "message": {
- "type": "identify",
- "event": "navigated user",
- "sentAt": "2021-09-08T11:10:45.466Z",
- "userId": "user12345",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "$direct",
- "initial_referrer": "$direct",
- "referring_domain": "",
- "initial_referring_domain": ""
- },
- "locale": "en-GB",
- "screen": {
- "width": 1536,
- "height": 960,
- "density": 2,
- "innerWidth": 1536,
- "innerHeight": 776
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36",
- "externalId": [
- {
- "type": "pardotId",
- "id": 123435
- }
- ]
- },
- "rudderId": "fa2994a5-2a81-45fd-9919-fcf5596ad380",
- "messageId": "e2d1a383-d9a2-4e03-a9dc-131d153c4d95",
- "timestamp": "2021-11-15T14:06:42.497+05:30",
- "properties": {},
- "receivedAt": "2021-11-15T14:06:42.497+05:30",
- "request_ip": "[::1]",
- "anonymousId": "d8b2ed61-7fa5-4ef8-bd92-6a506157c0cf",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-09-08T11:10:45.466Z",
- "traits": {
- "email": "Roger12@waltair.io",
- "active_seats": 4,
- "firstName": "Roger12",
- "lastName": "Federer12",
- "website": "https://rudderstack.com",
- "score": 14
- }
- }
- },
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": {
- "jobId": 2,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- },
- "message": {
- "type": "identify",
- "event": "insert product",
- "sentAt": "2021-09-08T11:10:45.466Z",
- "userId": "user12345",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "$direct",
- "initial_referrer": "$direct",
- "referring_domain": "",
- "initial_referring_domain": ""
- },
- "locale": "en-GB",
- "screen": {
- "width": 1536,
- "height": 960,
- "density": 2,
- "innerWidth": 1536,
- "innerHeight": 776
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
- },
- "rudderId": "fa2994a5-2a81-45fd-9919-fcf5596ad380",
- "messageId": "e2d1a383-d9a2-4e03-a9dc-131d153c4d95",
- "timestamp": "2021-11-15T14:06:42.497+05:30",
- "properties": {},
- "receivedAt": "2021-11-15T14:06:42.497+05:30",
- "request_ip": "[::1]",
- "anonymousId": "d8b2ed61-7fa5-4ef8-bd92-6a506157c0cf",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-09-08T11:10:45.466Z",
- "traits": {
- "email": "Roger_12@waltair.io",
- "active_seats": 4,
- "firstName": "Roger_12",
- "lastName": "Federer_12",
- "website": "https://rudderstack.com",
- "score": 14
- }
- }
- },
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": {
- "jobId": 3,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- },
- "message": {
- "type": "identify",
- "event": "insert product",
- "sentAt": "2021-09-08T11:10:45.466Z",
- "userId": "user12345",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "$direct",
- "initial_referrer": "$direct",
- "referring_domain": "",
- "initial_referring_domain": ""
- },
- "locale": "en-GB",
- "screen": {
- "width": 1536,
- "height": 960,
- "density": 2,
- "innerWidth": 1536,
- "innerHeight": 776
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36",
- "externalId": [
- {
- "type": "crmfid",
- "id": "00Q6r000002LKhTPVR"
- }
- ]
- },
- "rudderId": "fa2994a5-2a81-45fd-9919-fcf5596ad380",
- "messageId": "e2d1a383-d9a2-4e03-a9dc-131d153c4d95",
- "timestamp": "2021-11-15T14:06:42.497+05:30",
- "properties": {},
- "receivedAt": "2021-11-15T14:06:42.497+05:30",
- "request_ip": "[::1]",
- "anonymousId": "d8b2ed61-7fa5-4ef8-bd92-6a506157c0cf",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-09-08T11:10:45.466Z",
- "traits": {
- "email": "nick_kyrgios@waltair.io",
- "active_seats": 4,
- "firstName": "Nick",
- "lastName": "Kyrgios",
- "website": "https://rudderstack.com",
- "score": 12
- }
- }
- },
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": {
- "jobId": 4,
- "secret": {
- "access_token": "myExpiredToken",
- "refresh_token": "myRefreshToken"
- }
- },
- "message": {
- "type": "identify",
- "event": "navigated user",
- "sentAt": "2021-09-08T11:10:45.466Z",
- "userId": "user12345",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "$direct",
- "initial_referrer": "$direct",
- "referring_domain": "",
- "initial_referring_domain": ""
- },
- "locale": "en-GB",
- "screen": {
- "width": 1536,
- "height": 960,
- "density": 2,
- "innerWidth": 1536,
- "innerHeight": 776
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
- },
- "rudderId": "fa2994a5-2a81-45fd-9919-fcf5596ad380",
- "messageId": "e2d1a383-d9a2-4e03-a9dc-131d153c4d95",
- "timestamp": "2021-11-15T14:06:42.497+05:30",
- "properties": {},
- "receivedAt": "2021-11-15T14:06:42.497+05:30",
- "request_ip": "[::1]",
- "anonymousId": "d8b2ed61-7fa5-4ef8-bd92-6a506157c0cf",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-09-08T11:10:45.466Z",
- "traits": {
- "email": "rolex_waltair@mywebsite.io",
- "active_seats": 4,
- "firstName": "Rolex",
- "lastName": "Waltair",
- "website": "https://rudderstack.com",
- "score": 15
- }
- }
- },
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": {
- "jobId": 5,
- "secret": null
- },
- "message": {
- "type": "identify",
- "event": "navigated user",
- "sentAt": "2021-09-08T11:10:45.466Z",
- "userId": "user12345",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.1.18",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:5500/index.html",
- "path": "/index.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:5500/index.html",
- "referrer": "$direct",
- "initial_referrer": "$direct",
- "referring_domain": "",
- "initial_referring_domain": ""
- },
- "locale": "en-GB",
- "screen": {
- "width": 1536,
- "height": 960,
- "density": 2,
- "innerWidth": 1536,
- "innerHeight": 776
- },
- "traits": {},
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.18"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"
- },
- "rudderId": "fa2994a5-2a81-45fd-9919-fcf5596ad380",
- "messageId": "e2d1a383-d9a2-4e03-a9dc-131d153c4d95",
- "timestamp": "2021-11-15T14:06:42.497+05:30",
- "properties": {},
- "receivedAt": "2021-11-15T14:06:42.497+05:30",
- "request_ip": "[::1]",
- "anonymousId": "d8b2ed61-7fa5-4ef8-bd92-6a506157c0cf",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2021-09-08T11:10:45.466Z",
- "traits": {
- "email": "rolex_waltair@mywebsite.io",
- "active_seats": 4,
- "firstName": "Rolex",
- "lastName": "Waltair",
- "website": "https://rudderstack.com",
- "score": 15
- }
- }
- }
-]
diff --git a/test/__tests__/data/pardot_router_output.json b/test/__tests__/data/pardot_router_output.json
deleted file mode 100644
index 889cc8fd96c..00000000000
--- a/test/__tests__/data/pardot_router_output.json
+++ /dev/null
@@ -1,385 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://pi.pardot.com/api/prospect/version/4/do/upsert/id/123435",
- "headers": {
- "Authorization": "Bearer myToken",
- "Pardot-Business-Unit-Id": "0Uv2v000000k9tHCAQ"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "first_name": "Roger12",
- "last_name": "Federer12",
- "website": "https://rudderstack.com",
- "score": 14,
- "campaign_id": 42213
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://pi.pardot.com/api/prospect/version/4/do/upsert/email/Roger_12@waltair.io",
- "headers": {
- "Authorization": "Bearer myToken",
- "Pardot-Business-Unit-Id": "0Uv2v000000k9tHCAQ"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "first_name": "Roger_12",
- "last_name": "Federer_12",
- "website": "https://rudderstack.com",
- "score": 14,
- "campaign_id": 42213
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://pi.pardot.com/api/prospect/version/4/do/upsert/fid/00Q6r000002LKhTPVR",
- "headers": {
- "Authorization": "Bearer myToken",
- "Pardot-Business-Unit-Id": "0Uv2v000000k9tHCAQ"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "first_name": "Nick",
- "last_name": "Kyrgios",
- "website": "https://rudderstack.com",
- "score": 12,
- "campaign_id": 42213
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 3,
- "secret": {
- "access_token": "myToken",
- "refresh_token": "myRefreshToken"
- }
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://pi.pardot.com/api/prospect/version/4/do/upsert/email/rolex_waltair@mywebsite.io",
- "headers": {
- "Authorization": "Bearer myExpiredToken",
- "Pardot-Business-Unit-Id": "0Uv2v000000k9tHCAQ"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "first_name": "Rolex",
- "last_name": "Waltair",
- "website": "https://rudderstack.com",
- "score": 15,
- "campaign_id": 42213
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 4,
- "secret": {
- "access_token": "myExpiredToken",
- "refresh_token": "myRefreshToken"
- }
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- }
- },
- {
- "destination": {
- "Config": {
- "rudderAccountId": "1z8LpaSAuFR9TPWL6fECZfjmRa-",
- "businessUnitId": "0Uv2v000000k9tHCAQ",
- "campaignId": 42213,
- "authStatus": "active",
- "eventDelivery": true,
- "eventDeliveryTS": 1636965406397
- },
- "DestinationDefinition": {
- "name": "PARDOT",
- "displayName": "Pardot",
- "config": {
- "auth": {
- "type": "OAuth"
- },
- "transformAt": "router",
- "transformAtV1": "router",
- "saveDestinationResponse": true,
- "includeKeys": [],
- "excludeKeys": [],
- "supportedSourceTypes": [
- "android",
- "ios",
- "web",
- "unity",
- "amp",
- "cloud",
- "warehouse",
- "reactnative",
- "flutter",
- "cordova"
- ],
- "destConfig": {
- "defaultConfig": ["rudderAccountId", "businessUnitId", "campaignId"]
- },
- "secretKeys": ["businessUnitId"]
- }
- },
- "Enabled": true,
- "ID": "1WXjIHpu7ETXgjfiGPW3kCUgZFR",
- "Name": "test destination",
- "Transformations": []
- },
- "metadata": [
- {
- "jobId": 5,
- "secret": null
- }
- ],
- "batched": false,
- "statusCode": 500,
- "error": "OAuth - access token not found",
- "statTags": {
- "errorCategory": "platform",
- "errorType": "oAuthSecret"
- }
- }
-]
diff --git a/test/__tests__/data/personalize_input.json b/test/__tests__/data/personalize_input.json
deleted file mode 100644
index 6fd6e052f30..00000000000
--- a/test/__tests__/data/personalize_input.json
+++ /dev/null
@@ -1,2918 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "movieWatched": 2,
- "eventValue": 7.06
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "MOVIE_WATCHED",
- "to": "movieWatched"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "itemId"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "itemId"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "USER_ID",
- "to": "userId"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "USER_ID",
- "to": "userId"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1",
- "impressions": "abc"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "IMPRESSION",
- "to": "impressions"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1",
- "impressions": "abc",
- "eventValue": "3.4abc"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "IMPRESSION",
- "to": "impressions"
- },
- {
- "from": "EVENT_VALUE",
- "to": "eventValue"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1",
- "impressions": [2, 3],
- "eventValue": "3.4abc"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "IMPRESSION",
- "to": "impressions"
- },
- {
- "from": "EVENT_VALUE",
- "to": "eventValue"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT DELETED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "itemId": "item 1",
- "userId": "user 1",
- "impressions": [2, 3],
- "eventValue": "3.4abc"
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "IMPRESSION",
- "to": "impressions"
- },
- {
- "from": "EVENT_VALUE",
- "to": "eventValue"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "userId": "123456",
- "type": "identify",
- "traits": {
- "anonymousId": "anon_id",
- "typeOfMovie": "art film",
- "numberOfRatings": "13",
- "lastName": "Doe",
- "phone": "92374162212"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/USERS",
- "eventChoice": "PutUsers"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "",
- "eventChoice": "PutUsers"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": 1
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutEvents"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": ""
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": ""
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutEvents"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "userId": "123456",
- "type": "identify",
- "traits": {
- "anonymousId": "anon_id",
- "typeOfMovie": "art film",
- "numberOfRatings": "DDLJ",
- "lastName": "Doe",
- "phone": "92374162212"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/USERS",
- "eventChoice": "PutItems"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "userId": "123456",
- "type": "identify",
- "traits": {
- "anonymousId": "anon_id",
- "typeOfMovie": "art film",
- "numberOfRatings": "DDLJ",
- "lastName": "Doe",
- "phone": "92374162212"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "",
- "datasetARN": "",
- "eventChoice": "PutUsers"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "userId": "123456",
- "type": "identify",
- "traits": {
- "anonymousId": "anon_id",
- "typeOfMovie": "art film",
- "numberOfRatings": "DDLJ",
- "lastName": "Doe",
- "phone": "92374162212"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup",
- "eventChoice": "PutUsers"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "userId": "123456",
- "type": "identify",
- "traits": {
- "anonymousId": "anon_id",
- "typeOfMovie": "art film",
- "lastName": "Doe",
- "phone": "92374162212"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/USERS",
- "eventChoice": "PutUsers"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "typeOfMovie": "Art Film",
- "eventValue": 7.06,
- "itemId": ""
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "screen",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "TYPE_OF_MOVIE",
- "to": "typeOfMovie"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- },
- {
- "from": "ITEM_ID",
- "to": "properties.itemId"
- }
- ],
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60",
- "datasetARN": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "eventChoice": "PutEvents"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "movieWatched": 2,
- "eventValue": 7.06
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "MOVIE_WATCHED",
- "to": "movieWatched"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "stringifyProperty": true,
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "movieWatched": 2,
- "eventValue": 7.06
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "MOVIE_WATCHED",
- "to": "movieWatched"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "disableStringify": true,
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "anonymousId": "anon-id-new",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2021-03-13T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "movieWatched": 2,
- "eventValue": 7.06
- },
- "receivedAt": "2021-03-13T01:56:44.340+05:30",
- "request_ip": "[::1]",
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "sentAt": "2021-03-13T01:56:46.896+05:30",
- "timestamp": "2020-02-02T00:23:09.544Z",
- "type": "track",
- "userId": "identified user id"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968",
- "receivedAt": "2021-03-13T01:56:44.340+05:30"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "MOVIE_WATCHED",
- "to": "movieWatched"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "disableStringify": false,
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- },
- {
- "message": {
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "sessionId": "4bb69e26-b5a6-446a-a140-dbb6263369c9"
- },
- "event": "PRODUCT ADDED",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "originalTimestamp": "2023-01-10T01:56:46.896+05:30",
- "properties": {
- "numberOfRatings": "checking with webapp change",
- "movieWatched": 2,
- "eventValue": 7.06
- },
- "type": "track"
- },
- "metadata": {
- "sourceId": "1pe7ty3hMMQCnrfZ0Mn2QG48884",
- "destinationId": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "jobId": 1,
- "destinationType": "PERSONALIZE",
- "messageId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "messageIds": null,
- "rudderId": "daf823fb-e8d3-413a-8313-d34cd756f968"
- },
- "destination": {
- "ID": "1pe9WgFOuFHOSIfmUkkhVTD1Rsd",
- "Name": "personalize Dev Testing",
- "DestinationDefinition": {
- "ID": "1pdthjPnz8gQhSTE2QTbm2LUMGM",
- "Name": "PERSONALIZE",
- "DisplayName": "AWS Personalize",
- "Config": {
- "destConfig": {
- "defaultConfig": [
- "accessKeyId",
- "secretAccessKey",
- "region",
- "trackingId",
- "eventName",
- "customMappings"
- ]
- },
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "secretKeys": ["accessKeyId", "secretAccessKey"],
- "supportedSourceTypes": ["android", "ios", "web", "unity", "amp", "cloud", "reactnative"],
- "transformAt": "processor"
- }
- },
- "Config": {
- "accessKeyId": "ABC",
- "customMappings": [
- {
- "from": "MOVIE_WATCHED",
- "to": "movieWatched"
- },
- {
- "from": "NUMBER_OF_RATINGS",
- "to": "numberOfRatings"
- }
- ],
- "datasetARN": "",
- "eventChoice": "PutEvents",
- "disableStringify": false,
- "region": "us-east-1",
- "secretAccessKey": "DEF",
- "trackingId": "c60"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "libraries": [],
- "request": {
- "query": {}
- }
- }
-]
diff --git a/test/__tests__/data/personalize_output.json b/test/__tests__/data/personalize_output.json
deleted file mode 100644
index 8f4802fe8d1..00000000000
--- a/test/__tests__/data/personalize_output.json
+++ /dev/null
@@ -1,334 +0,0 @@
-[
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT ADDED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "movieWatched": "2",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "item 1",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "user 1",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "userId": "identified user id",
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "eventList": [
- {
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- },
- "impression": ["abc"],
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9"
- }
- ]
- },
- {
- "userId": "identified user id",
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "eventList": [
- {
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- },
- "impression": ["abc"],
- "eventValue": 3.4,
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9"
- }
- ]
- },
- {
- "userId": "identified user id",
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "eventList": [
- {
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- },
- "impression": ["2", "3"],
- "eventValue": 3.4,
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9"
- }
- ]
- },
- {
- "userId": "identified user id",
- "sessionId": "identified user id",
- "trackingId": "c60",
- "eventList": [
- {
- "eventType": "PRODUCT DELETED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- },
- "impression": ["2", "3"],
- "eventValue": 3.4,
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9"
- }
- ]
- },
- {
- "payload": {
- "datasetArn": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/USERS",
- "users": [
- {
- "userId": "123456",
- "properties": {
- "typeOfMovie": "art film",
- "numberOfRatings": "13"
- }
- }
- ]
- },
- "choice": "PutUsers"
- },
- {
- "payload": {
- "datasetArn": "arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/ITEMS",
- "items": [
- {
- "properties": {
- "typeOfMovie": "Art Film",
- "numberOfRatings": "checking with webapp change"
- },
- "itemId": "1"
- }
- ]
- },
- "choice": "PutItems"
- },
- {
- "error": "Event type is required"
- },
- {
- "error": "Mapped property typeOfMovie not found"
- },
- {
- "error": "Either Dataset ARN is not correctly entered or invalid"
- },
- {
- "error": "Dataset ARN is a mandatory information to use putItems"
- },
- {
- "error": "PutUsers is not supported for Track Calls"
- },
- {
- "error": "Tracking Id is a mandatory information to use putEvents"
- },
- {
- "error": "itemId is a mandatory property for using PutItems"
- },
- {
- "error": "Cannot process if no event name specified"
- },
- {
- "error": "This Message Type does not support PutItems. Aborting message"
- },
- {
- "error": "Dataset ARN is a mandatory information to use putUsers"
- },
- {
- "error": "Either Dataset ARN is not correctly entered or invalid"
- },
- {
- "error": "Mapped property numberOfRatings not found"
- },
- {
- "error": "Event type screen is not supported"
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT ADDED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "movieWatched": "2",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT ADDED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "movieWatched": 2,
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "anon-id-new",
- "trackingId": "c60",
- "userId": "identified user id",
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT ADDED",
- "sentAt": "2020-02-02T00:23:09.544Z",
- "properties": {
- "movieWatched": "2",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- },
- {
- "sessionId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "trackingId": "c60",
- "userId": null,
- "eventList": [
- {
- "itemId": "4bb69e26-b5a6-446a-a140-dbb6263369c9",
- "eventType": "PRODUCT ADDED",
- "sentAt": "2023-01-10T01:56:46.896+05:30",
- "properties": {
- "movieWatched": "2",
- "numberOfRatings": "checking with webapp change"
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/pinterest_tag_router_batch_output.json b/test/__tests__/data/pinterest_tag_router_batch_output.json
index 6fceb08278b..995d68428a4 100644
--- a/test/__tests__/data/pinterest_tag_router_batch_output.json
+++ b/test/__tests__/data/pinterest_tag_router_batch_output.json
@@ -142,10 +142,12 @@
},
"metadata": [
{
- "jobId": 1
+ "jobId": 1,
+ "userId": "u1"
},
{
- "jobId": 2
+ "jobId": 2,
+ "userId": "u1"
}
],
"batched": true,
@@ -329,13 +331,16 @@
},
"metadata": [
{
- "jobId": 3
+ "jobId": 3,
+ "userId": "u1"
},
{
- "jobId": 4
+ "jobId": 4,
+ "userId": "u1"
},
{
- "jobId": 6
+ "jobId": 6,
+ "userId": "u1"
}
],
"batched": true,
@@ -445,7 +450,8 @@
},
"metadata": [
{
- "jobId": 7
+ "jobId": 7,
+ "userId": "u1"
}
],
"batched": true,
@@ -496,7 +502,8 @@
{
"metadata": [
{
- "jobId": 5
+ "jobId": 5,
+ "userId": "u1"
}
],
"batched": false,
@@ -736,10 +743,12 @@
},
"metadata": [
{
- "jobId": 8
+ "jobId": 8,
+ "userId": "u1"
},
{
- "jobId": 9
+ "jobId": 9,
+ "userId": "u1"
}
],
"statusCode": 200
@@ -852,7 +861,8 @@
},
"metadata": [
{
- "jobId": 10
+ "jobId": 10,
+ "userId": "u1"
}
],
"statusCode": 200
diff --git a/test/__tests__/data/pinterest_tag_router_error_input.json b/test/__tests__/data/pinterest_tag_router_error_input.json
index e241ffb864c..ce188c73355 100644
--- a/test/__tests__/data/pinterest_tag_router_error_input.json
+++ b/test/__tests__/data/pinterest_tag_router_error_input.json
@@ -75,7 +75,8 @@
}
},
"metadata": {
- "jobId": 5
+ "jobId": 5,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
diff --git a/test/__tests__/data/pinterest_tag_router_error_output.json b/test/__tests__/data/pinterest_tag_router_error_output.json
index c4f0f4768d9..4cd4e6966cd 100644
--- a/test/__tests__/data/pinterest_tag_router_error_output.json
+++ b/test/__tests__/data/pinterest_tag_router_error_output.json
@@ -2,7 +2,8 @@
{
"metadata": [
{
- "jobId": 5
+ "jobId": 5,
+ "userId": "u1"
}
],
"batched": false,
diff --git a/test/__tests__/data/pinterest_tag_router_input.json b/test/__tests__/data/pinterest_tag_router_input.json
index 4b966f948f9..26febec456a 100644
--- a/test/__tests__/data/pinterest_tag_router_input.json
+++ b/test/__tests__/data/pinterest_tag_router_input.json
@@ -77,7 +77,8 @@
}
},
"metadata": {
- "jobId": 1
+ "jobId": 1,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -198,7 +199,8 @@
}
},
"metadata": {
- "jobId": 2
+ "jobId": 2,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -300,7 +302,8 @@
}
},
"metadata": {
- "jobId": 3
+ "jobId": 3,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -421,7 +424,8 @@
}
},
"metadata": {
- "jobId": 4
+ "jobId": 4,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -542,7 +546,8 @@
}
},
"metadata": {
- "jobId": 5
+ "jobId": 5,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -663,7 +668,8 @@
}
},
"metadata": {
- "jobId": 6
+ "jobId": 6,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -764,7 +770,8 @@
"files": {}
},
"metadata": {
- "jobId": 7
+ "jobId": 7,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -888,7 +895,8 @@
}
},
"metadata": {
- "jobId": 8
+ "jobId": 8,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -1011,7 +1019,8 @@
}
},
"metadata": {
- "jobId": 9
+ "jobId": 9,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
@@ -1134,7 +1143,8 @@
}
},
"metadata": {
- "jobId": 10
+ "jobId": 10,
+ "userId": "u1"
},
"destination": {
"ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
diff --git a/test/__tests__/data/pinterest_tag_router_output.json b/test/__tests__/data/pinterest_tag_router_output.json
index 0e128575ee9..2bfc7c3cf57 100644
--- a/test/__tests__/data/pinterest_tag_router_output.json
+++ b/test/__tests__/data/pinterest_tag_router_output.json
@@ -294,22 +294,28 @@
},
"metadata": [
{
- "jobId": 1
+ "jobId": 1,
+ "userId": "u1"
},
{
- "jobId": 2
+ "jobId": 2,
+ "userId": "u1"
},
{
- "jobId": 3
+ "jobId": 3,
+ "userId": "u1"
},
{
- "jobId": 4
+ "jobId": 4,
+ "userId": "u1"
},
{
- "jobId": 6
+ "jobId": 6,
+ "userId": "u1"
},
{
- "jobId": 7
+ "jobId": 7,
+ "userId": "u1"
}
],
"batched": true,
@@ -360,7 +366,8 @@
{
"metadata": [
{
- "jobId": 5
+ "jobId": 5,
+ "userId": "u1"
}
],
"statTags": {
@@ -593,13 +600,16 @@
},
"metadata": [
{
- "jobId": 8
+ "jobId": 8,
+ "userId": "u1"
},
{
- "jobId": 9
+ "jobId": 9,
+ "userId": "u1"
},
{
- "jobId": 10
+ "jobId": 10,
+ "userId": "u1"
}
],
"batched": true,
diff --git a/test/__tests__/data/profitwell_input.json b/test/__tests__/data/profitwell_input.json
deleted file mode 100644
index e73a17ad37d..00000000000
--- a/test/__tests__/data/profitwell_input.json
+++ /dev/null
@@ -1,719 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "23453"
- }
- ],
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
-
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "1234"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17rV"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17rV"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active",
- "effectiveDate": "1609748705"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17rV"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "monthly",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active",
- "effectiveDate": "1609748705"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17rV"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "activate",
- "effectiveDate": "1609748705"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {}
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17rV"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active",
- "effectiveDate": "1609748705"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "externalId": [
- {
- "type": "profitwellUserId",
- "id": "pwu_Oea7HXV3bnTP"
- },
- {
- "type": "profitwellSubscriptionId",
- "id": "pws_FecTCEyo17"
- }
- ],
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active",
- "effectiveDate": "1609748705"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- },
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "message": {
- "channel": "web",
- "userId": "sp_245",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.9"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.9"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active",
- "effectiveDate": 1609748705
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
- },
- "messageId": "6a5f38c0-4e75-4268-a066-2b73fbcad01f",
- "originalTimestamp": "2021-01-04T08:25:04.780Z",
- "receivedAt": "2021-01-04T13:55:04.799+05:30",
- "request_ip": "[::1]",
- "rudderId": "79881a62-980a-4d76-89ca-7099440f8c13",
- "sentAt": "2021-01-04T08:25:04.781Z",
- "timestamp": "2021-09-06T14:15:06.798+05:30",
- "type": "identify"
- }
- }
-]
diff --git a/test/__tests__/data/profitwell_output.json b/test/__tests__/data/profitwell_output.json
deleted file mode 100644
index 04be6d990fe..00000000000
--- a/test/__tests__/data/profitwell_output.json
+++ /dev/null
@@ -1,166 +0,0 @@
-[
- {
- "statusCode": 400,
- "error": "userId or userAlias is required for identify"
- },
- {
- "statusCode": 400,
- "error": "No user found for profitwell user_id"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "params": {},
- "body": {
- "JSON": {
- "subscription_alias": "samual",
- "email": "sample@sample.com",
- "plan_id": "23",
- "plan_interval": "month",
- "plan_currency": "usd",
- "status": "active",
- "value": "23",
- "user_alias": "sp_245",
- "effective_date": 1630917906
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "subscriptionId or subscriptionAlias is required for identify"
- },
- {
- "statusCode": 400,
- "error": "No user found for profitwell user_id"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "params": {},
- "body": {
- "JSON": {
- "subscription_alias": "samual",
- "email": "sample@sample.com",
- "plan_id": "23",
- "plan_interval": "month",
- "plan_currency": "usd",
- "status": "active",
- "value": "23",
- "user_id": "pwu_Oea7HXV3bnTP",
- "user_alias": "sp_245",
- "effective_date": 1630917906
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "Missing required value from [\"traits.effectiveDate\",\"context.traits.effectiveDate\"]"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/pws_FecTCEyo17rV/",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "params": {},
- "body": {
- "JSON": {
- "plan_id": "23",
- "plan_interval": "month",
- "value": "23",
- "status": "active",
- "effective_date": 1609748705
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "invalid format for planInterval. Aborting"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/pws_FecTCEyo17rV/",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "params": {},
- "body": {
- "JSON": {
- "plan_id": "23",
- "plan_interval": "month",
- "value": "23",
- "effective_date": 1609748705
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "statusCode": 400,
- "error": "Private API Key not found. Aborting."
- },
- {
- "statusCode": 400,
- "error": "Profitwell subscription_id not found"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "params": {},
- "body": {
- "JSON": {
- "subscription_alias": "samual",
- "email": "sample@sample.com",
- "plan_id": "23",
- "plan_interval": "month",
- "plan_currency": "usd",
- "status": "active",
- "value": "23",
- "effective_date": 1609748705,
- "user_alias": "sp_245"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/profitwell_router_input.json b/test/__tests__/data/profitwell_router_input.json
deleted file mode 100644
index 50903283a7b..00000000000
--- a/test/__tests__/data/profitwell_router_input.json
+++ /dev/null
@@ -1,45 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.0.0" },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": { "name": "", "version": "" },
- "screen": { "density": 2 }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "identify",
- "userId": "samual",
- "traits": {
- "email": "sample@sample.com",
- "planId": "23",
- "planInterval": "month",
- "planCurrency": "usd",
- "value": "23",
- "subscriptionAlias": "samual",
- "status": "active"
- },
- "integrations": { "All": true },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- }
-]
diff --git a/test/__tests__/data/profitwell_router_output.json b/test/__tests__/data/profitwell_router_output.json
deleted file mode 100644
index ca98903838b..00000000000
--- a/test/__tests__/data/profitwell_router_output.json
+++ /dev/null
@@ -1,44 +0,0 @@
-[
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "subscription_alias": "samual",
- "email": "sample@sample.com",
- "plan_id": "23",
- "plan_interval": "month",
- "plan_currency": "usd",
- "status": "active",
- "value": "23",
- "user_alias": "samual",
- "effective_date": 1571043797
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "9270161a8e5abaa0e56efddfd9dbcb62"
- },
- "version": "1",
- "endpoint": "https://api.profitwell.com/v2/subscriptions/"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "privateApiKey": "9270161a8e5abaa0e56efddfd9dbcb62"
- }
- }
- }
-]
diff --git a/test/__tests__/data/proxy_input.json b/test/__tests__/data/proxy_input.json
index a647238f9f8..0d7ff24ab7d 100644
--- a/test/__tests__/data/proxy_input.json
+++ b/test/__tests__/data/proxy_input.json
@@ -263,4 +263,4 @@
"destination": "any"
}
}
-]
\ No newline at end of file
+]
diff --git a/test/__tests__/data/rockerbox.json b/test/__tests__/data/rockerbox.json
deleted file mode 100644
index 6e90e20241a..00000000000
--- a/test/__tests__/data/rockerbox.json
+++ /dev/null
@@ -1,598 +0,0 @@
-[
- {
- "description": "Error flow - Message type not supported",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF"
- }
- },
- "message": {
- "context": {
- "traits": {
- "homwTown": "kanpur",
- "age": "24"
- }
- },
- "type": "Identify",
- "userId": "yash001",
- "originalTimestamp": "2019-10-14T09:03:17.562Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Message type identify is not supported",
- "statTags": {
- "destination": "rockerbox",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Error flow - Unassociated Event Type",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added To Cart",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 584,
- "innerHeight": 789
- },
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder",
- "subscription": "youtube"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- },
- "output": {
- "statusCode": 400,
- "error": "The event is not associated to a RockerBox event. Aborting!",
- "statTags": {
- "destination": "rockerbox",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track Call with a userId",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "action": "conv.add_to_cart",
- "checkout_id": "12345",
- "email": "userSampleX120@gmail.com",
- "conversion_source": "RudderStack",
- "customer_id": "userSampleX138",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "phone": "9878764736",
- "product_name": "Red T-shirt",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "timestamp": 1659902539
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "files": {},
- "headers": {},
- "method": "POST",
- "params": {
- "advertiser": "test id"
- },
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track Call with all properties",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "externalId": [
- {
- "type": "rockerboxExternalId",
- "id": "rbUid"
- }
- ],
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt",
- "externalId": "rbUid",
- "countryCode": "IN",
- "listingId": "10101"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "test id"
- },
- "body": {
- "JSON": {
- "customer_id": "userSampleX138",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "email": "userSampleX120@gmail.com",
- "externalId": "rbUid",
- "phone": "9878764736",
- "product_name": "Red T-shirt",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "timestamp": 1659902539,
- "country_code": "IN",
- "listing_id": "10101",
- "conversion_source": "RudderStack",
- "action": "conv.add_to_cart",
- "checkout_id": "12345"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call with all properties along-with custom properties",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "hdowhfiqhfwaiwhrdafshbfacicolsa",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "customPropsMapping": [
- {
- "from": "unit_id",
- "to": "unitID"
- },
- {
- "from": "merch_id",
- "to": "merch_id"
- },
- {
- "from": "bounce_id",
- "to": "bounceID"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "useNativeSDKToSend": {
- "web": false
- },
- "clientAuthId": {
- "web": ""
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": ""
- }
- ]
- },
- "customDomain": {
- "web": ""
- },
- "enableCookieSync": {
- "web": false
- }
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.0.0" },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": { "name": "", "version": "" },
- "screen": { "density": 2 }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "type": "track",
- "traits": {
- "userId": "anon_id",
- "email": "jamesDoe@gmail.com",
- "name": "James Doe",
- "phone": "92374162212",
- "gender": "M",
- "employed": true,
- "birthday": "1614775793",
- "education": "Science",
- "graduate": true,
- "married": true,
- "customerType": "Prime",
- "msg_push": true,
- "msgSms": true,
- "msgemail": true,
- "msgwhatsapp": false,
- "custom_tags": ["Test_User", "Interested_User", "DIY_Hobby"],
- "custom_mappings": {
- "Office": "Trastkiv",
- "Country": "Russia"
- },
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 789223,
- "state": "WB",
- "street": ""
- }
- },
- "properties": {
- "unit_id": 123,
- "merch_id": false,
- "bounceiD": "fakefake",
- "counce_id": ""
- },
- "event": "Product Added",
- "integrations": { "All": true },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "email": "jamesDoe@gmail.com",
- "phone": "92374162212",
- "action": "conv.add_to_cart",
- "anonymous_id": "anon_id",
- "bounceiD": "fakefake",
- "merch_id": false,
- "timestamp": 1571043797,
- "unit_id": 123,
- "customer_id": "anon_id",
- "conversion_source": "RudderStack",
- "counce_id": ""
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {
- "advertiser": "hdowhfiqhfwaiwhrdafshbfacicolsa"
- },
- "headers": {},
- "version": "1",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack"
- }
- },
- {
- "description": "userId/anonymousId check",
- "input": {
- "destination": {
- "Config": {
- "advertiserId": "KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": { "name": "RudderLabs JavaScript SDK", "version": "1.0.0" },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": { "name": "", "version": "" },
- "screen": { "density": 2 }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "traits": {
- "email": "jamesDoe@gmail.com",
- "name": "James Doe",
- "phone": "92374162212",
- "gender": "M",
- "employed": true,
- "birthday": "1614775793",
- "education": "Science",
- "graduate": true,
- "married": true,
- "customerType": "Prime",
- "msg_push": true,
- "msgSms": true,
- "msgemail": true,
- "msgwhatsapp": false,
- "custom_tags": ["Test_User", "Interested_User", "DIY_Hobby"],
- "custom_mappings": {
- "Office": "Trastkiv",
- "Country": "Russia"
- },
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 789223,
- "state": "WB",
- "street": ""
- }
- },
- "properties": {
- "unit_id": 123,
- "merch_id": false,
- "bounceiD": "fakefake",
- "counce_id": ""
- },
- "event": "Product Added",
- "integrations": { "All": true },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Anyone of userId or anonymousId is required to make the call",
- "statTags": {
- "destination": "rockerbox",
- "stage": "transform",
- "scope": "exception"
- }
- }
- }
-]
diff --git a/test/__tests__/data/rockerbox_router_input.json b/test/__tests__/data/rockerbox_router_input.json
deleted file mode 100644
index 7b03502663e..00000000000
--- a/test/__tests__/data/rockerbox_router_input.json
+++ /dev/null
@@ -1,168 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- },
- {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Viewed",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "type": "track",
- "event": "Product Viewed",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- }
-]
diff --git a/test/__tests__/data/rockerbox_router_output.json b/test/__tests__/data/rockerbox_router_output.json
deleted file mode 100644
index 5394fcd2202..00000000000
--- a/test/__tests__/data/rockerbox_router_output.json
+++ /dev/null
@@ -1,158 +0,0 @@
-[
- {
- "batched": false,
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "test id"
- },
- "body": {
- "JSON": {
- "action": "conv.add_to_cart",
- "checkout_id": "12345",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "conversion_source": "RudderStack",
- "customer_id": "userSampleX138",
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "product_name": "Red T-shirt",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "timestamp": 1659902539
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "statusCode": 200
- },
- {
- "batched": false,
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "test id"
- },
- "body": {
- "JSON": {
- "action": "conv.add_to_cart",
- "checkout_id": "12345",
- "conversion_source": "RudderStack",
- "customer_id": "userSampleX138",
- "email": "userSampleX120@gmail.com",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "phone": "9878764736",
- "product_name": "Red T-shirt",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "timestamp": 1659902539
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Viewed",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "statusCode": 200
- }
-]
diff --git a/test/__tests__/data/sendgrid.json b/test/__tests__/data/sendgrid.json
deleted file mode 100644
index 1981e16cf16..00000000000
--- a/test/__tests__/data/sendgrid.json
+++ /dev/null
@@ -1,1301 +0,0 @@
-[
- {
- "description": "Identify call without an email",
- "input": {
- "destination": {
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [
- {
- "event": "open"
- }
- ],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [
- {
- "groupId": ""
- }
- ],
- "html": "",
- "listId": "list111",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "type": "identify",
- "userId": "user@1",
- "context": {
- "traits": {
- "age": "25",
- "city": "Surat",
- "phone": "+91 9876543210",
- "lastName": "test",
- "firstName": "rudder",
- "state": "Gujarat"
- }
- }
- }
- },
- "output": {
- "error": "Parameter mail is required"
- }
- },
- {
- "description": "Identify call with list_id configured from web-app",
- "input": {
- "destination": {
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [
- {
- "event": "open"
- }
- ],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [
- {
- "groupId": ""
- }
- ],
- "html": "",
- "listId": "list111",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "type": "identify",
- "userId": "user@1",
- "context": {
- "traits": {
- "age": "25",
- "city": "Surat",
- "email": "test@rudderstack.com",
- "phone": "+91 9876543210",
- "lastName": "test",
- "firstName": "rudder",
- "state": "Gujarat"
- }
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "contactDetails": {
- "email": "test@rudderstack.com",
- "last_name": "test",
- "first_name": "rudder",
- "phone_number": "+91 9876543210",
- "custom_fields": {}
- },
- "contactListIds": "list111"
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "version": "1",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts"
- }
- },
- {
- "description": "Identify call with no list-id given",
- "input": {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [
- {
- "from": "name",
- "to": "user_name"
- }
- ],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [
- {
- "event": "open"
- }
- ],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [
- {
- "groupId": ""
- }
- ],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "type": "identify",
- "userId": "user@1",
- "context": {
- "traits": {
- "age": "25",
- "city": "Surat",
- "name": "rudder test",
- "email": "test@rudderstack.com",
- "phone": "+91 9876543210",
- "lastName": "test",
- "firstName": "rudder",
- "state": "Gujarat"
- }
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "contactDetails": {
- "email": "test@rudderstack.com",
- "last_name": "test",
- "first_name": "rudder",
- "unique_name": "rudder test",
- "phone_number": "+91 9876543210",
- "custom_fields": {
- "w1_T": "rudder test"
- }
- },
- "contactListIds": ""
- },
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "version": "1",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts"
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "text": null,
- "utmContent": null
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "ankit@rudderstack.com"
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ]
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "testing@gmail.com"
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ]
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "group": "12345",
- "groupsToDisplay": [
- {
- "groupId": "12345"
- },
- {
- "groupId": "abc"
- },
- {
- "groupId": "12346"
- }
- ]
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "testing@gmail.com"
- },
- "asm": {
- "group_id": 12345,
- "groups_to_display": [12345, 12346]
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ]
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track call without an event name",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "group": "12345",
- "groupsToDisplay": [
- {
- "groupId": "12345"
- },
- {
- "groupId": "abc"
- },
- {
- "groupId": "12346"
- }
- ]
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "new event",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "error": "Event not configured on dashboard"
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "group": "12345",
- "groupsToDisplay": [
- {
- "groupId": "12345"
- },
- {
- "groupId": "abc"
- },
- {
- "groupId": "12346"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ2FmZ3FlcmRxZ2Iua2puYWRrbGpuYWtqc2Rmbg==",
- "filename": "index.html"
- }
- ]
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "testing@gmail.com"
- },
- "asm": {
- "group_id": 12345,
- "groups_to_display": [12345, 12346]
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ2FmZ3FlcmRxZ2Iua2puYWRrbGpuYWtqc2Rmbg==",
- "filename": "index.html"
- }
- ]
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "group": "12345",
- "groupsToDisplay": [
- {
- "groupId": "12345"
- },
- {
- "groupId": "abc"
- },
- {
- "groupId": "12346"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=",
- "filename": "index.html"
- },
- {
- "content": "bGFqa3NtZGZrZ2hxaWVybmtsYSBmZGtvamx3bWVGTC5NQW5kcy5rbmtmYWtkZg=="
- }
- ]
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "testing@gmail.com"
- },
- "asm": {
- "group_id": 12345,
- "groups_to_display": [12345, 12346]
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=",
- "filename": "index.html"
- }
- ]
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track Call",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [
- {
- "event": "testing"
- },
- {
- "event": "clicked"
- }
- ],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "footerText": "some text",
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false,
- "group": "12345",
- "groupsToDisplay": [
- {
- "groupId": "12345"
- },
- {
- "groupId": "abc"
- },
- {
- "groupId": "12346"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=",
- "filename": "index.html"
- },
- {
- "content": "bGFqa3NtZGZrZ2hxaWVybmtsYSBmZGtvamx3bWVGTC5NQW5kcy5rbmtmYWtkZg=="
- }
- ]
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "replyTo": {
- "email": "testing@gmail.com"
- },
- "mailSettings": {
- "bypassListManagement": true,
- "footer": true
- },
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.sendgrid.com/v3/mail/send",
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": {
- "email": "testing@gmail.com"
- },
- "asm": {
- "group_id": 12345,
- "groups_to_display": [12345, 12346]
- },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "attachments": [
- {
- "content": "YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=",
- "filename": "index.html"
- }
- ],
- "mail_settings": {
- "bypass_list_management": {
- "enable": true
- },
- "footer": {
- "enable": true,
- "text": "some text"
- }
- }
- }
- },
- "files": {}
- }
- }
-]
diff --git a/test/__tests__/data/sendgrid_batch.json b/test/__tests__/data/sendgrid_batch.json
deleted file mode 100644
index 23c9c34f9c2..00000000000
--- a/test/__tests__/data/sendgrid_batch.json
+++ /dev/null
@@ -1,941 +0,0 @@
-[
- {
- "description": "Identify call batching with multiple listIds",
- "input": [
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@3",
- "type": "identify",
- "context": {
- "traits": {
- "age": "30",
- "email": "user3@rudderlabs.com",
- "phone": "+91 9876543210",
- "city": "Ahmedabad",
- "state": "Gujarat",
- "lastName": "gupta",
- "firstName": "aman",
- "name": "aman gupta"
- },
- "externalId": [
- {
- "type": "listIds",
- "id": ["476b736e-24a4-4089-8392-66a6bf6aa14d"]
- }
- ]
- }
- },
- "metadata": {
- "jobId": 1
- }
- },
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@4",
- "type": "identify",
- "context": {
- "traits": {
- "email": "user4@rudderlabs.com",
- "phone": "+91 9876543210",
- "userId": "sajal",
- "city": "Bombey",
- "state": "Maharastra",
- "lastName": "gupta",
- "username": "suresh gupta",
- "firstName": "suresh"
- },
- "externalId": [
- {
- "type": "listIds",
- "id": "737ae8d4-25b4-496e-adff-2fded15fd0c6"
- }
- ]
- }
- },
- "metadata": {
- "jobId": 2
- }
- },
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@5",
- "type": "identify",
- "context": {
- "traits": {
- "email": "user5@rudderlabs.com",
- "phone": "+91 9876543210",
- "city": "Banglore",
- "lastName": "bhatt",
- "username": "kiran bhatt",
- "firstName": "kiran"
- },
- "externalId": [
- {
- "type": "listIds",
- "id": [
- "737ae8d4-25b4-496e-adff-2fded15fd0c6",
- "a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1"
- ]
- }
- ]
- }
- },
- "metadata": {
- "jobId": 3
- }
- },
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@6",
- "type": "identify",
- "context": {
- "traits": {
- "email": "user6@rudderlabs.com",
- "phone": "+91 9876543210",
- "city": "Los Angeles",
- "lastName": "doe",
- "name": "john doe",
- "state": "California",
- "firstName": "john"
- },
- "externalId": [
- {
- "type": "listIds",
- "id": [
- "bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e",
- "cb7f13a1-b77b-4fb3-8440-56f6524716d3"
- ]
- }
- ]
- }
- },
- "metadata": {
- "jobId": 4
- }
- },
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@7",
- "type": "identify",
- "context": {
- "traits": {
- "email": "user7@rudderlabs.com",
- "phone": "+91 9876543210",
- "city": "Chicago",
- "lastName": "patel",
- "name": "reshma patel",
- "state": "Illinois",
- "firstName": "reshma"
- }
- }
- },
- "metadata": {
- "jobId": 5
- }
- },
- {
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- },
- "message": {
- "userId": "user@8",
- "type": "identify",
- "context": {
- "traits": {
- "email": "user8@rudderlabs.com",
- "phone": "+91 9876543210",
- "city": "Chicago",
- "lastName": "patel",
- "name": "karishma patel",
- "state": "Illinois",
- "firstName": "karishma"
- },
- "externalId": [
- {
- "type": "listIds",
- "id": [
- "737ae8d4-25b4-496e-adff-2fded15fd0c6",
- "a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1",
- "bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e",
- "cb7f13a1-b77b-4fb3-8440-56f6524716d3"
- ]
- }
- ]
- }
- },
- "metadata": {
- "jobId": 6
- }
- }
- ],
- "output": [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "list_ids": ["476b736e-24a4-4089-8392-66a6bf6aa14d"],
- "contacts": [
- {
- "email": "user3@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "aman",
- "last_name": "gupta",
- "unique_name": "aman gupta",
- "custom_fields": { "w1_T": "aman gupta" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 1 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "list_ids": ["737ae8d4-25b4-496e-adff-2fded15fd0c6"],
- "contacts": [
- {
- "email": "user4@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "suresh",
- "last_name": "gupta",
- "custom_fields": {}
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 2 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "list_ids": [
- "737ae8d4-25b4-496e-adff-2fded15fd0c6",
- "a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1"
- ],
- "contacts": [
- {
- "email": "user5@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "kiran",
- "last_name": "bhatt",
- "custom_fields": {}
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 3 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "list_ids": [
- "bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e",
- "cb7f13a1-b77b-4fb3-8440-56f6524716d3"
- ],
- "contacts": [
- {
- "email": "user6@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "john",
- "last_name": "doe",
- "unique_name": "john doe",
- "custom_fields": { "w1_T": "john doe" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 4 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "contacts": [
- {
- "email": "user7@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "reshma",
- "last_name": "patel",
- "unique_name": "reshma patel",
- "custom_fields": { "w1_T": "reshma patel" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 5 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.sendgrid.com/v3/marketing/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer apikey"
- },
- "params": {},
- "body": {
- "JSON": {
- "list_ids": [
- "737ae8d4-25b4-496e-adff-2fded15fd0c6",
- "a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1",
- "bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e",
- "cb7f13a1-b77b-4fb3-8440-56f6524716d3"
- ],
- "contacts": [
- {
- "email": "user8@rudderlabs.com",
- "phone_number": "+91 9876543210",
- "first_name": "karishma",
- "last_name": "patel",
- "unique_name": "karishma patel",
- "custom_fields": { "w1_T": "karishma patel" }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [{ "jobId": 6 }],
- "batched": true,
- "statusCode": 200,
- "destination": {
- "ID": "2HOQOO6wWKaKjeQrEABXgiH6cmU",
- "Config": {
- "IPPoolName": "",
- "apiKey": "apikey",
- "attachments": [
- {
- "content": "",
- "contentId": "",
- "disposition": "",
- "filename": "",
- "type": ""
- }
- ],
- "clickTracking": true,
- "clickTrackingEnableText": true,
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "customFieldsMapping": [{ "from": "name", "to": "user_name" }],
- "eventDelivery": false,
- "eventDeliveryTS": 1668424218224,
- "eventNamesSettings": [{ "event": "open" }],
- "footer": false,
- "fromEmail": "a@g.com",
- "fromName": "",
- "ganalytics": false,
- "group": "",
- "groupsToDisplay": [{ "groupId": "" }],
- "html": "",
- "mailFromTraits": false,
- "openTracking": false,
- "openTrackingSubstitutionTag": "",
- "replyToEmail": "",
- "replyToName": "",
- "sandboxMode": false,
- "subject": "hello there from webflow",
- "subscriptionTracking": false,
- "substitutionTag": "",
- "templateId": "",
- "text": ""
- }
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/sendgrid_router.json b/test/__tests__/data/sendgrid_router.json
deleted file mode 100644
index a9147d1ee74..00000000000
--- a/test/__tests__/data/sendgrid_router.json
+++ /dev/null
@@ -1,152 +0,0 @@
-[
- {
- "description": "Router Test Case",
- "input": [
- {
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [{ "event": "testing" }, { "event": "clicked" }],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false
- }
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": { "name": "", "version": "" },
- "screen": { "density": 2 }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "event": "testing",
- "properties": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- },
- {
- "name": "hello"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- }
- },
- "integrations": { "All": true },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- }
- ],
- "output": [
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON_ARRAY": {},
- "JSON": {
- "personalizations": [
- {
- "to": [
- {
- "email": "a@g.com"
- }
- ],
- "subject": "hey there"
- }
- ],
- "from": {
- "email": "ankit@rudderstack.com"
- },
- "reply_to": { "email": "ankit@rudderstack.com" },
- "subject": "A sample subject",
- "content": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ]
- }
- },
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "headers": {
- "Authorization": "Bearer apikey",
- "Content-Type": "application/json"
- },
- "version": "1",
- "endpoint": "https://api.sendgrid.com/v3/mail/send"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "apiKey": "apikey",
- "eventNamesSettings": [{ "event": "testing" }, { "event": "clicked" }],
- "subject": "A sample subject",
- "replyToEmail": "ankit@rudderstack.com",
- "contents": [
- {
- "type": "text/html",
- "value": "Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
"
- }
- ],
- "footer": false,
- "bypassListManagement": false,
- "sandboxMode": false,
- "clickTracking": false,
- "openTracking": false,
- "ganalytics": false,
- "subscriptionTracking": false,
- "clickTrackingEnableText": false
- }
- }
- }
- ]
- }
-]
diff --git a/test/__tests__/data/sendinblue.json b/test/__tests__/data/sendinblue.json
deleted file mode 100644
index 06b6df14d96..00000000000
--- a/test/__tests__/data/sendinblue.json
+++ /dev/null
@@ -1,1196 +0,0 @@
-[
- {
- "description": "Page call without email or phone",
- "input": {
- "message": {
- "type": "page",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "name": "New Page",
- "properties": {
- "url": "https://www.google.com/",
- "title": "Google home"
- },
- "context": {
- "traits": {},
- "page": {
- "url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "path": "/Testing/test/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/test/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "At least one of `email` or `phone` is required"
- }
- },
- {
- "description": "Page call",
- "input": {
- "message": {
- "type": "page",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "name": "New Page",
- "properties": {
- "url": "https://www.google.com/",
- "title": "Google home"
- },
- "context": {
- "traits": {
- "email": "john_doe@example.com"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "path": "/Testing/test/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/test/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": false,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "page": "https://www.google.com/",
- "properties": {
- "ma_path": "/Testing/test/ourSdk.html",
- "ma_referrer": "http://127.0.0.1:7307/Testing/test/",
- "ma_title": "Google home",
- "sib_name": "New Page"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackPage",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track call without email or phone",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {},
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "At least one of `email` or `phone` is required"
- }
- },
- {
- "description": "Track call without event",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "properties": {},
- "context": {}
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "Event name is required"
- }
- },
- {
- "description": "Track events with sendTraitsInTrack flag set to true",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {},
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "sendTraitsInTrack": true
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "event": "Order Completed",
- "eventdata": {},
- "properties": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "SMS": "+919876543210",
- "age": 19,
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackEvent",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track events with contactAttributeMapping provided in webapp",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {},
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "sendTraitsInTrack": true
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "event": "Order Completed",
- "eventdata": {},
- "properties": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "age": 19,
- "role": "SDE"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackEvent",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track events with propertiesIdKey provided in integration object",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "product_id": 1234,
- "product_name": "Track Pants",
- "amount": 1,
- "price": 220
- },
- {
- "product_id": 5768,
- "product_name": "T-Shirt",
- "amount": 5,
- "price": 1058
- }
- ]
- },
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "integrations": {
- "All": true,
- "sendinblue": {
- "propertiesIdKey": "orderId"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "sendTraitsInTrack": true
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "event": "Order Completed",
- "eventdata": {
- "data": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "amount": 1,
- "price": 220,
- "product_id": 1234,
- "product_name": "Track Pants"
- },
- {
- "amount": 5,
- "price": 1058,
- "product_id": 5768,
- "product_name": "T-Shirt"
- }
- ]
- },
- "id": "1341394-3812392190"
- },
- "properties": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "age": 19,
- "role": "SDE"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackEvent",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track events with eventdata.id taken from messageId",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "product_id": 1234,
- "product_name": "Track Pants",
- "amount": 1,
- "price": 220
- },
- {
- "product_id": 5768,
- "product_name": "T-Shirt",
- "amount": 5,
- "price": 1058
- }
- ]
- },
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "sendTraitsInTrack": true
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "event": "Order Completed",
- "eventdata": {
- "data": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "amount": 1,
- "price": 220,
- "product_id": 1234,
- "product_name": "Track Pants"
- },
- {
- "amount": 5,
- "price": 1058,
- "product_id": 5768,
- "product_name": "T-Shirt"
- }
- ]
- },
- "id": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff"
- },
- "properties": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "age": 19,
- "role": "SDE"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackEvent",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Track link without email or phone",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "trackLink",
- "properties": {
- "link": "https://www.google.com/gmail/",
- "emailCount": 19
- },
- "context": {
- "traits": {}
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "At least one of `email` or `phone` is required"
- }
- },
- {
- "description": "Track link without link",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "trackLink",
- "properties": {},
- "context": {
- "traits": {
- "phone": "+919507545089"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "Missing required value from \"properties.link\""
- }
- },
- {
- "description": "Track link",
- "input": {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "trackLink",
- "properties": {
- "link": "https://www.google.com/gmail/",
- "emailCount": 19
- },
- "context": {
- "traits": {
- "phone": "+919507545089"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "919507545089@mailin-sms.com",
- "link": "https://www.google.com/gmail/",
- "properties": {
- "emailCount": 19
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackLink",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Identify call with invalid email",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": { "email": "abc.com" },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "The provided email is invalid"
- }
- },
- {
- "description": "Identify call with invalid phone number",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": { "phone": "99999999" },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "The provided phone number is invalid"
- }
- },
- {
- "description": "Identify call to create or update a contact without email or phone",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": {
- "error": "At least one of `email` or `phone` is required"
- }
- },
- {
- "description": "Identify call to create or update a contact",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "newEmail": "alex_root@example.com",
- "role": "SDE"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueIncludeListIds",
- "id": [1, 2]
- }
- ]
- },
- "integrations": {
- "All": true,
- "sendinblue": {
- "emailBlacklisted": true
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ]
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "attributes": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "EMAIL": "alex_root@example.com",
- "age": 19,
- "role": "SDE"
- },
- "email": "john_doe@example.com",
- "emailBlacklisted": true,
- "listIds": [1, 2],
- "updateEnabled": true
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Identify call to create DOI contact with templatedId from externalId",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueIncludeListIds",
- "id": [1, 2]
- },
- {
- "type": "sendinblueUnlinkListIds",
- "id": [5]
- },
- {
- "type": "sendinblueTemplateId",
- "id": 2
- }
- ]
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "attributes": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "SMS": "+919876543210",
- "age": 19,
- "location": "Mumbai",
- "role": "SDE"
- },
- "email": "john_doe@example.com",
- "includeListIds": [1, 2],
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard",
- "templateId": 3
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts/doubleOptinConfirmation",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Identify call to create DOI contact without include list Ids",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "error": "sendinblueIncludeListIds is required to create a contact using DOI"
- }
- },
- {
- "description": "Identify call to create DOI contact without template Id",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "error": "templateId is required to create a contact using DOI"
- }
- },
- {
- "description": "Identify call to update a DOI contact without an email or contact ID",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "Gordon",
- "lastName": "Pittman",
- "age": 19,
- "location": "Mumbai",
- "role": "SDE"
- },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "error": "At least one of `email` or `contactId` is required to update the contact using DOI"
- }
- },
- {
- "description": "Identify call to update a DOI contact using contactId as an Identifier and without include list Ids",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "age": 36,
- "location": "Mumbai",
- "role": "SDE 2"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueContactId",
- "id": 42
- }
- ]
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "attributes": {
- "age": 36,
- "location": "Mumbai",
- "role": "SDE 2"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts/42",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "PUT",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Identify call to update a DOI contact using email as an Identifier and without include list Ids",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "age": 36,
- "location": "Mumbai",
- "role": "SDE 2",
- "phone": "+918888888888",
- "email": "gordon_pittman@example.com",
- "newEmail": "gordon_pittman007@example.com"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueIncludeListIds",
- "id": [1]
- },
- {
- "type": "sendinblueUnlinkListIds",
- "id": [2]
- }
- ]
- },
- "integrations": {
- "All": true,
- "sendinblue": {
- "emailBlacklisted": true,
- "smsBlacklisted": false
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- "output": {
- "body": {
- "FORM": {},
- "JSON": {
- "attributes": {
- "age": 36,
- "location": "Mumbai",
- "role": "SDE 2",
- "SMS": "+918888888888",
- "EMAIL": "gordon_pittman007@example.com"
- },
- "emailBlacklisted": true,
- "smsBlacklisted": false,
- "listIds": [1],
- "unlinkListIds": [2]
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts/gordon_pittman%40example.com",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "PUT",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- },
- {
- "description": "Identify call to unlink a contact from given lists",
- "input": {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "email": "eric_kim@example.com"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueUnlinkListIds",
- "id": [2, 5]
- }
- ]
- }
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false
- }
- }
- },
- "output": [
- {
- "body": {
- "FORM": {},
- "JSON": {
- "emails": ["eric_kim@example.com"]
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts/lists/2/contacts/remove",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- {
- "body": {
- "FORM": {},
- "JSON": {
- "emails": ["eric_kim@example.com"]
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts/lists/5/contacts/remove",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- }
- ]
- }
-]
diff --git a/test/__tests__/data/sendinblue_router_input.json b/test/__tests__/data/sendinblue_router_input.json
deleted file mode 100644
index 1f2b8a1dc2e..00000000000
--- a/test/__tests__/data/sendinblue_router_input.json
+++ /dev/null
@@ -1,187 +0,0 @@
-[
- {
- "message": {
- "type": "track",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "event": "Order Completed",
- "properties": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "product_id": 1234,
- "product_name": "Track Pants",
- "amount": 1,
- "price": 220
- },
- {
- "product_id": 5768,
- "product_name": "T-Shirt",
- "amount": 5,
- "price": 1058
- }
- ]
- },
- "context": {
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "sendTraitsInTrack": true
- }
- }
- },
- {
- "message": {
- "type": "page",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "name": "New Page",
- "properties": {
- "url": "https://www.google.com/",
- "title": "Google home"
- },
- "context": {
- "traits": {
- "email": "john_doe@example.com"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "path": "/Testing/test/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/test/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/test/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": false,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "newEmail": "alex_root@example.com",
- "role": "SDE"
- },
- "context": {
- "externalId": [
- {
- "type": "sendinblueIncludeListIds",
- "id": [1, 2]
- }
- ]
- },
- "integrations": {
- "All": true,
- "sendinblue": {
- "emailBlacklisted": true
- }
- },
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "metadata": {
- "jobId": 3
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ]
- }
- }
- },
- {
- "message": {
- "type": "identify",
- "sentAt": "2021-01-03T17:02:53.195Z",
- "channel": "web",
- "traits": {
- "first_name": "John",
- "lastName": "Doe",
- "age": 19,
- "email": "john_doe@example.com",
- "phone": "+919876543210",
- "location": "Mumbai",
- "role": "SDE"
- },
- "context": {},
- "rudderId": "8f8fa6b5-8e24-489c-8e22-61f23f2e364f",
- "messageId": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff",
- "anonymousId": "97c46c81-3140-456d-b2a9-690d70aaca35",
- "originalTimestamp": "2021-01-03T17:02:53.193Z"
- },
- "metadata": {
- "jobId": 4
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- }
-]
diff --git a/test/__tests__/data/sendinblue_router_output.json b/test/__tests__/data/sendinblue_router_output.json
deleted file mode 100644
index c15c15205c6..00000000000
--- a/test/__tests__/data/sendinblue_router_output.json
+++ /dev/null
@@ -1,196 +0,0 @@
-[
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "event": "Order Completed",
- "eventdata": {
- "data": {
- "orderId": "1341394-3812392190",
- "products": [
- {
- "amount": 1,
- "price": 220,
- "product_id": 1234,
- "product_name": "Track Pants"
- },
- {
- "amount": 5,
- "price": 1058,
- "product_id": 5768,
- "product_name": "T-Shirt"
- }
- ]
- },
- "id": "2116ef8c-efc3-4ca4-851b-02ee60dad6ff"
- },
- "properties": {
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "age": 19,
- "role": "SDE"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackEvent",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "doi": false,
- "sendTraitsInTrack": true
- }
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "statusCode": 200
- },
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "FORM": {},
- "JSON": {
- "email": "john_doe@example.com",
- "page": "https://www.google.com/",
- "properties": {
- "ma_path": "/Testing/test/ourSdk.html",
- "ma_referrer": "http://127.0.0.1:7307/Testing/test/",
- "ma_title": "Google home",
- "sib_name": "New Page"
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://in-automate.sendinblue.com/api/v2/trackPage",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "ma-key": "clientKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "doi": false,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard",
- "templateId": 3
- }
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "statusCode": 200
- },
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "FORM": {},
- "JSON": {
- "attributes": {
- "EMAIL": "alex_root@example.com",
- "FIRSTNAME": "John",
- "LASTNAME": "Doe",
- "LOCATION": "Mumbai",
- "SMS": "+919876543210",
- "age": 19,
- "role": "SDE"
- },
- "email": "john_doe@example.com",
- "emailBlacklisted": true,
- "listIds": [1, 2],
- "updateEnabled": true
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://api.sendinblue.com/v3/contacts",
- "files": {},
- "headers": {
- "Content-Type": "application/json",
- "api-key": "apiKey123"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "contactAttributeMapping": [
- {
- "from": "location",
- "to": "LOCATION"
- }
- ],
- "doi": false
- }
- },
- "metadata": [
- {
- "jobId": 3
- }
- ],
- "statusCode": 200
- },
- {
- "batched": false,
- "error": "sendinblueIncludeListIds is required to create a contact using DOI",
- "metadata": [
- {
- "jobId": 4
- }
- ],
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- },
- "statusCode": 400,
- "destination": {
- "Config": {
- "apiKey": "apiKey123",
- "clientKey": "clientKey123",
- "templateId": 3,
- "doi": true,
- "redirectionUrl": "https://app.sendinblue.com/marketing-dashboard"
- }
- }
- }
-]
diff --git a/test/__tests__/data/sf_input.json b/test/__tests__/data/sf_input.json
deleted file mode 100644
index a10caa8d12e..00000000000
--- a/test/__tests__/data/sf_input.json
+++ /dev/null
@@ -1,152 +0,0 @@
-[
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "abcd"
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "abcd"
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event GA3",
- "properties": {
- "user_actual_role": "system_admin, system_user",
- "user_actual_id": 12345
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-149602794-1"
- },
- "Enabled": true
- }
- }
-]
diff --git a/test/__tests__/data/sf_output.json b/test/__tests__/data/sf_output.json
deleted file mode 100644
index 9efe161599d..00000000000
--- a/test/__tests__/data/sf_output.json
+++ /dev/null
@@ -1,43 +0,0 @@
-[
- {
- "statusCode": 400,
- "message": "message type not supported"
- },
- {
- "endpoint": "https://www.google-analytics.com/collect",
- "requestConfig": {
- "requestFormat": "PARAMS",
- "requestMethod": "GET"
- },
- "header": {},
- "userId": "00000000000000000000000000",
- "payload": {
- "v": "1",
- "t": "pageview",
- "tid": "abcd",
- "cid": "00000000000000000000000000",
- "dt": "",
- "dl": "",
- "dp": "/abc",
- "dr": ""
- },
- "statusCode": 200
- },
- {
- "endpoint": "https://www.google-analytics.com/collect",
- "requestConfig": {
- "requestFormat": "PARAMS",
- "requestMethod": "GET"
- },
- "header": {},
- "userId": "00000000000000000000000000",
- "payload": {
- "v": "1",
- "t": "event",
- "tid": "UA-149602794-1",
- "cid": "00000000000000000000000000",
- "ea": "test track event GA3"
- },
- "statusCode": 200
- }
-]
diff --git a/test/__tests__/data/sfmc_input.json b/test/__tests__/data/sfmc_input.json
deleted file mode 100644
index ee6eccb1543..00000000000
--- a/test/__tests__/data/sfmc_input.json
+++ /dev/null
@@ -1,997 +0,0 @@
-[
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": true,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "userId": 12345,
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "revenue",
- "userId": 12345,
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "device": {
- "adTrackingEnabled": true,
- "type": "iOS",
- "manufacturer": "Apple",
- "model": "iPhone XR",
- "name": "Apple iPhone XR"
- },
- "network": {
- "bluetooth": "off",
- "wifi": "connceted",
- "cellular": "active",
- "carrier": "Verizon"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Event Name",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "properties": {
- "Plan": "plan value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- { "from": "Event Name", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [{ "from": "userId", "to": "Contact Key" }],
- "eventToUUID": [{ "event": "", "uuid": false }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Event Name",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "device": {
- "adTrackingEnabled": true,
- "type": "iOS",
- "manufacturer": "Apple",
- "model": "iPhone XR",
- "name": "Apple iPhone XR"
- },
- "network": {
- "bluetooth": "off",
- "wifi": "connceted",
- "cellular": "active",
- "carrier": "Verizon"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "properties": {
- "Plan": "plan value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- { "from": "Event Name", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [{ "from": "userId", "to": "Contact Key" }],
- "eventToUUID": [{ "event": "Event Name", "uuid": true }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Purchase Event",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "device": {
- "adTrackingEnabled": true,
- "type": "iOS",
- "manufacturer": "Apple",
- "model": "iPhone XR",
- "name": "Apple iPhone XR"
- },
- "network": {
- "bluetooth": "off",
- "wifi": "connceted",
- "cellular": "active",
- "carrier": "Verizon"
- },
- "traits": {
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "properties": {
- "Plan": "plan value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- { "from": "Event Name", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [{ "from": "userId", "to": "Contact Key" }],
- "eventToUUID": [{ "event": "Event Name", "uuid": true }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Event Name",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "device": {
- "adTrackingEnabled": true,
- "type": "iOS",
- "manufacturer": "Apple",
- "model": "iPhone XR",
- "name": "Apple iPhone XR"
- },
- "network": {
- "bluetooth": "off",
- "wifi": "connceted",
- "cellular": "active",
- "carrier": "Verizon"
- },
- "traits": {
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "properties": {
- "Plan": "plan value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- { "from": "Event Name", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [{ "from": "userId", "to": "Contact Key" }],
- "eventToUUID": [{ "event": "Event Name", "uuid": true }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Watch",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "properties": {
- "Plan": "plan value",
- "Price Key": 29.99,
- "Guest Key": "2323-34343-3434"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- {
- "from": "Event Name",
- "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB"
- },
- { "from": "Watch", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [
- { "from": "userId", "to": "User Key" },
- { "from": "watch", "to": "Guest Key" }
- ],
- "eventToUUID": [{ "event": "Event Name", "uuid": true }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "event": "Watch",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "track",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "properties": {
- "Plan": "plan value",
- "Price Key": 29.99,
- "Contact Key": 12345,
- "Guest Key": "2323-34343-3434"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToExternalKey": [
- {
- "from": "Event Name",
- "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB"
- },
- { "from": "Watch", "to": "C500FD37-155C-49BD-A21B-AFCEF3D1A9CB" }
- ],
- "eventToPrimaryKey": [
- { "from": "userId", "to": "User Key" },
- { "from": "watch", "to": "Guest Key, Contact Key" }
- ],
- "eventToUUID": [{ "event": "Event Name", "uuid": true }],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- }
-]
diff --git a/test/__tests__/data/sfmc_output.json b/test/__tests__/data/sfmc_output.json
deleted file mode 100644
index aaaf23aea85..00000000000
--- a/test/__tests__/data/sfmc_output.json
+++ /dev/null
@@ -1,311 +0,0 @@
-[
- {
- "error": "Creating or updating contacts is disabled. To enable this feature set \"Do Not Create or Update Contacts\" to false"
- },
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributeSets": [],
- "contactKey": "12345"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "values": {
- "Contact Key": "12345",
- "App Name": "RudderLabs JavaScript SDK",
- "App Version": "1.0.0",
- "App Build": "1.0.0",
- "UTM Campaign": "Demo Campaign",
- "UTM Source": "facebook",
- "UTM Medium": "online",
- "UTM Term": "Demo terms",
- "UTM Content": "Demo content",
- "Locale": "en-GB",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "IP Address": "0.0.0.0",
- "Screen Density": 2,
- "Screen Height": 860,
- "Screen Width": 1280,
- "Email": "tonmoy@rudderstack.com",
- "Name": "Tonmoy Labs"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- {
- "error": "Either userId or email is required"
- },
- {
- "error": "Event type is required"
- },
- {
- "error": "Event type revenue is not supported"
- },
- [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributeSets": [],
- "contactKey": "12345"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "values": {
- "Name": "Tonmoy Labs",
- "Email": "tonmoy@rudderstack.com",
- "Locale": "en-GB",
- "App Name": "RudderLabs JavaScript SDK",
- "UTM Term": "Demo terms",
- "App Build": "1.0.0",
- "IP Address": "0.0.0.0",
- "UTM Medium": "online",
- "UTM Source": "facebook",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "App Version": "1.0.0",
- "Contact Key": "12345",
- "Device Name": "Apple iPhone XR",
- "Device Type": "iOS",
- "UTM Content": "Demo content",
- "Device-model": "iPhone XR",
- "Screen Width": 1280,
- "UTM Campaign": "Demo Campaign",
- "Wifi Enabled": "connceted",
- "Screen Height": 860,
- "Screen Density": 2,
- "Network Carrier": "Verizon",
- "Cellular Enabled": "active",
- "Bluetooth Enabled": "off",
- "Ad Tracking Enabled": true,
- "Device Manufacturer": "Apple"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Contact Key:12345",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "values": {
- "Plan": "plan value",
- "Locale": "en-GB",
- "App Name": "RudderLabs JavaScript SDK",
- "UTM Term": "Demo terms",
- "App Build": "1.0.0",
- "IP Address": "0.0.0.0",
- "UTM Medium": "online",
- "UTM Source": "facebook",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "App Version": "1.0.0",
- "Contact Key": "12345",
- "UTM Content": "Demo content",
- "Screen Width": 1280,
- "UTM Campaign": "Demo Campaign",
- "Screen Height": 860,
- "Screen Density": 2
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "values": {
- "Plan": "plan value",
- "Uuid": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "Locale": "en-GB",
- "App Name": "RudderLabs JavaScript SDK",
- "UTM Term": "Demo terms",
- "App Build": "1.0.0",
- "IP Address": "0.0.0.0",
- "UTM Medium": "online",
- "UTM Source": "facebook",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "App Version": "1.0.0",
- "Device Name": "Apple iPhone XR",
- "Device Type": "iOS",
- "UTM Content": "Demo content",
- "Device-model": "iPhone XR",
- "Screen Width": 1280,
- "UTM Campaign": "Demo Campaign",
- "Wifi Enabled": "connceted",
- "Screen Height": 860,
- "Screen Density": 2,
- "Network Carrier": "Verizon",
- "Cellular Enabled": "active",
- "Bluetooth Enabled": "off",
- "Ad Tracking Enabled": true,
- "Device Manufacturer": "Apple"
- }
- }
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "version": "1",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Uuid:50360b9c-ea8d-409c-b672-c9230f91cce5"
- },
- {
- "error": "Event not mapped for this track call"
- },
- {
- "error": "Either userId or email is required"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "values": {
- "Plan": "plan value",
- "Locale": "en-GB",
- "App Name": "RudderLabs JavaScript SDK",
- "UTM Term": "Demo terms",
- "App Build": "1.0.0",
- "Price Key": 29.99,
- "Guest Key": "2323-34343-3434",
- "IP Address": "0.0.0.0",
- "UTM Medium": "online",
- "UTM Source": "facebook",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "App Version": "1.0.0",
- "UTM Content": "Demo content",
- "Screen Width": 1280,
- "UTM Campaign": "Demo Campaign",
- "Screen Height": 860,
- "Screen Density": 2
- }
- }
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "version": "1",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Guest Key:2323-34343-3434"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "values": {
- "Plan": "plan value",
- "Locale": "en-GB",
- "App Name": "RudderLabs JavaScript SDK",
- "UTM Term": "Demo terms",
- "App Build": "1.0.0",
- "Price Key": 29.99,
- "Contact Key": 12345,
- "Guest Key": "2323-34343-3434",
- "IP Address": "0.0.0.0",
- "UTM Medium": "online",
- "UTM Source": "facebook",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "App Version": "1.0.0",
- "UTM Content": "Demo content",
- "Screen Width": 1280,
- "UTM Campaign": "Demo Campaign",
- "Screen Height": 860,
- "Screen Density": 2
- }
- }
- },
- "type": "REST",
- "files": {},
- "method": "PUT",
- "params": {},
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "version": "1",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Guest Key:2323-34343-3434,Contact Key:12345"
- }
-]
diff --git a/test/__tests__/data/sfmc_router_input.json b/test/__tests__/data/sfmc_router_input.json
deleted file mode 100644
index ba925030eb0..00000000000
--- a/test/__tests__/data/sfmc_router_input.json
+++ /dev/null
@@ -1,158 +0,0 @@
-[
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": true,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- },
- {
- "message": {
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "campaign": {
- "name": "Demo Campaign",
- "source": "facebook",
- "medium": "online",
- "term": "Demo terms",
- "content": "Demo content"
- },
- "traits": {
- "email": "tonmoy@rudderstack.com",
- "name": "Tonmoy Labs"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-GB",
- "ip": "0.0.0.0",
- "screen": {
- "density": 2,
- "height": 860,
- "width": 1280
- }
- },
- "type": "identify",
- "messageId": "50360b9c-ea8d-409c-b672-c9230f91cce5",
- "originalTimestamp": "2019-10-15T09:35:31.288Z",
- "userId": "12345",
- "userProperties": {
- "test_key": "test value"
- },
- "sentAt": "2019-10-14T09:03:22.563Z",
- "integrations": {
- "All": true
- }
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- }
-]
diff --git a/test/__tests__/data/sfmc_router_output.json b/test/__tests__/data/sfmc_router_output.json
deleted file mode 100644
index beb90b5e13b..00000000000
--- a/test/__tests__/data/sfmc_router_output.json
+++ /dev/null
@@ -1,146 +0,0 @@
-[
- {
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": true,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": true,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- },
- "batched": false,
- "statusCode": 400,
- "error": "Creating or updating contacts is disabled. To enable this feature set \"Do Not Create or Update Contacts\" to false",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration"
- }
- },
- {
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributeSets": [],
- "contactKey": "12345"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer undefined"
- },
- "params": {},
- "body": {
- "JSON": {
- "values": {
- "Contact Key": "12345",
- "App Name": "RudderLabs JavaScript SDK",
- "App Version": "1.0.0",
- "App Build": "1.0.0",
- "UTM Campaign": "Demo Campaign",
- "UTM Source": "facebook",
- "UTM Medium": "online",
- "UTM Term": "Demo terms",
- "UTM Content": "Demo content",
- "Locale": "en-GB",
- "User Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "IP Address": "0.0.0.0",
- "Screen Density": 2,
- "Screen Height": 860,
- "Screen Width": 1280,
- "Email": "tonmoy@rudderstack.com",
- "Name": "Tonmoy Labs"
- }
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "1pYpzzvcn7AQ2W9GGIAZSsN6Mfq",
- "Name": "SFMC",
- "DestinationDefinition": {
- "ID": "1pYpYSeQd8OeN6xPdw6VGDzqUd1",
- "Name": "SFMC",
- "DisplayName": "Salesforce Marketing Cloud",
- "Config": {
- "destConfig": [],
- "excludeKeys": [],
- "includeKeys": [],
- "saveDestinationResponse": false,
- "supportedSourceTypes": [],
- "transformAt": "processor"
- },
- "ResponseRules": {}
- },
- "Config": {
- "clientId": "vcn7AQ2W9GGIAZSsN6Mfq",
- "clientSecret": "vcn7AQ2W9GGIAZSsN6Mfq",
- "createOrUpdateContacts": false,
- "eventDelivery": true,
- "eventDeliveryTS": 1615371070621,
- "eventToUUID": [],
- "externalKey": "f3ffa19b-e0b3-4967-829f-549b781080e6",
- "subDomain": "vcn7AQ2W9GGIAZSsN6Mfq"
- },
- "Enabled": true,
- "Transformations": []
- }
- }
-]
diff --git a/test/__tests__/data/shopify.json b/test/__tests__/data/shopify.json
index 0153df4d26a..48ca8c75a01 100644
--- a/test/__tests__/data/shopify.json
+++ b/test/__tests__/data/shopify.json
@@ -4,9 +4,7 @@
"input": {
"id": "shopify_test3",
"query_parameters": {
- "topic": [
- "carts_create"
- ]
+ "topic": ["carts_create"]
},
"token": "shopify_test3",
"line_items": [],
@@ -33,12 +31,8 @@
"description": "Invalid topic",
"input": {
"query_parameters": {
- "signature": [
- "rudderstack"
- ],
- "writeKey": [
- "sample-write-key"
- ]
+ "signature": ["rudderstack"],
+ "writeKey": ["sample-write-key"]
}
},
"output": {
@@ -50,12 +44,8 @@
"input": {
"query_parameters": {
"topic": [],
- "signature": [
- "rudderstack"
- ],
- "writeKey": [
- "sample-write-key"
- ]
+ "signature": ["rudderstack"],
+ "writeKey": ["sample-write-key"]
}
},
"output": {
@@ -66,15 +56,9 @@
"description": "Unsupported Event Type",
"input": {
"query_parameters": {
- "topic": [
- "random_event"
- ],
- "signature": [
- "rudderstack"
- ],
- "writeKey": [
- "sample-write-key"
- ]
+ "topic": ["random_event"],
+ "signature": ["rudderstack"],
+ "writeKey": ["sample-write-key"]
}
},
"output": {
@@ -89,15 +73,9 @@
"description": "Identify Call for customers create event",
"input": {
"query_parameters": {
- "topic": [
- "customers_create"
- ],
- "signature": [
- "rudderstack"
- ],
- "writeKey": [
- "sample-write-key"
- ]
+ "topic": ["customers_create"],
+ "signature": ["rudderstack"],
+ "writeKey": ["sample-write-key"]
},
"id": 5747017285820,
"email": "anuraj@rudderstack.com",
@@ -256,15 +234,9 @@
"description": "Unsupported checkout event",
"input": {
"query_parameters": {
- "topic": [
- "checkout_delete"
- ],
- "writeKey": [
- "sample-write-key"
- ],
- "signature": [
- "rudderstack"
- ]
+ "topic": ["checkout_delete"],
+ "writeKey": ["sample-write-key"],
+ "signature": ["rudderstack"]
},
"admin_graphql_api_id": "gid://shopify/Fulfillment/4124667937024",
"created_at": "2022-01-05T18:13:02+05:30",
@@ -292,13 +264,9 @@
"status": "success",
"tracking_company": "Amazon Logistics UK",
"tracking_number": "Sample001test",
- "tracking_numbers": [
- "Sample001test"
- ],
+ "tracking_numbers": ["Sample001test"],
"tracking_url": "https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530",
- "tracking_urls": [
- "https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530"
- ],
+ "tracking_urls": ["https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530"],
"updated_at": "2022-01-05T18:16:48+05:30"
},
"output": {
@@ -313,15 +281,9 @@
"description": "Track Call -> Fullfillments updated event",
"input": {
"query_parameters": {
- "topic": [
- "fulfillments_update"
- ],
- "writeKey": [
- "sample-write-key"
- ],
- "signature": [
- "rudderstack"
- ]
+ "topic": ["fulfillments_update"],
+ "writeKey": ["sample-write-key"],
+ "signature": ["rudderstack"]
},
"shipping_address": {
"address1": "11 Rani Sankari Lane Patuapara Bhowanipore"
@@ -420,13 +382,9 @@
"status": "success",
"tracking_company": "Amazon Logistics UK",
"tracking_number": "Sample001test",
- "tracking_numbers": [
- "Sample001test"
- ],
+ "tracking_numbers": ["Sample001test"],
"tracking_url": "https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530",
- "tracking_urls": [
- "https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530"
- ],
+ "tracking_urls": ["https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530"],
"updated_at": "2022-01-05T18:16:48+05:30"
},
"output": {
@@ -462,9 +420,7 @@
"status": "success",
"tracking_company": "Amazon Logistics UK",
"tracking_number": "Sample001test",
- "tracking_numbers": [
- "Sample001test"
- ],
+ "tracking_numbers": ["Sample001test"],
"tracking_url": "https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530",
"tracking_urls": [
"https://www.amazon.co.uk/gp/help/customer/display.html?nodeId=201910530"
@@ -556,4 +512,4 @@
}
}
}
-]
\ No newline at end of file
+]
diff --git a/test/__tests__/data/snapchat_custom_audience_proxy_input.json b/test/__tests__/data/snapchat_custom_audience_proxy_input.json
deleted file mode 100644
index 89340810b4a..00000000000
--- a/test/__tests__/data/snapchat_custom_audience_proxy_input.json
+++ /dev/null
@@ -1,102 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/456/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/789/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "id": "123456",
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- }
-]
\ No newline at end of file
diff --git a/test/__tests__/data/snapchat_custom_audience_proxy_output.json b/test/__tests__/data/snapchat_custom_audience_proxy_output.json
deleted file mode 100644
index e5bcc4faa8f..00000000000
--- a/test/__tests__/data/snapchat_custom_audience_proxy_output.json
+++ /dev/null
@@ -1,71 +0,0 @@
-[
- {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "request_status": "SUCCESS",
- "request_id": "12345",
- "users": [
- {
- "sub_request_status": "SUCCESS",
- "user": {
- "number_uploaded_users": 1
- }
- }
- ]
- },
- "status": 200
- }
- }
- },
- {
- "output": {
- "status": 500,
- "destinationResponse": {
- "response": "unauthorized",
- "status": 401
- },
- "message": "Failed with unauthorized during snapchat_custom_audience response transformation",
- "statTags": {
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- },
- "authErrorCategory": "REFRESH_TOKEN"
- }
- },
- {
- "output": {
- "authErrorCategory": "AUTH_STATUS_INACTIVE",
- "status": 400,
- "destinationResponse": {
- "response": {
- "request_status": "ERROR",
- "request_id": "98e2a602-3cf4-4596-a8f9-7f034161f89a",
- "debug_message": "Caller does not have permission",
- "display_message": "We're sorry, but the requested resource is not available at this time",
- "error_code": "E3002"
- },
- "status": 403
- },
- "message": "undefined during snapchat_custom_audience response transformation",
- "statTags": {
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
-]
diff --git a/test/__tests__/data/stormly.json b/test/__tests__/data/stormly.json
deleted file mode 100644
index 2f0bb7f4d6d..00000000000
--- a/test/__tests__/data/stormly.json
+++ /dev/null
@@ -1,388 +0,0 @@
-[
- {
- "description": "Identify call without userId",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "identify",
- "context": {
- "traits": {
- "name": "John Doe",
- "email": "johndoe@gmail.com",
- "age": 25
- }
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "error": "Missing required value from \"userIdOnly\""
- }
- },
- {
- "description": "Identify call with userId, traits",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "channel": "web",
- "userId": "5136633649",
- "context": {
- "traits": {
- "name": "John Doe",
- "email": "johndoe@gmail.com",
- "age": 25
- }
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/identify",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "traits": {
- "name": "John Doe",
- "email": "johndoe@gmail.com",
- "age": 25
- },
- "timestamp": "2022-01-20T13:39:21.032Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call without userId",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3.0,
- "review_body": "Average product, expected much more.",
- "groupId": "91Yb32830"
- },
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "error": "Missing required value from \"userIdOnly\""
- }
- },
- {
- "description": "Track call without groupId",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "userId": "5136633649",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3.0,
- "review_body": "Average product, expected much more."
- },
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/track",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "event": "Product Reviewed",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3,
- "review_body": "Average product, expected much more."
- },
- "timestamp": "2022-01-20T13:39:21.032Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call without properties",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "userId": "5136633649",
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/track",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "event": "Product Reviewed",
- "timestamp": "2022-01-20T13:39:21.032Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call with userId, groupId and properties",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "userId": "5136633649",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3.0,
- "review_body": "Average product, expected much more.",
- "groupId": "91Yb32830"
- },
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/track",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "event": "Product Reviewed",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3,
- "review_body": "Average product, expected much more."
- },
- "timestamp": "2022-01-20T13:39:21.032Z",
- "context": {
- "groupId": "91Yb32830"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Track call with userId, groupId (from externalId) and properties",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "userId": "5136633649",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3.0,
- "review_body": "Average product, expected much more.",
- "groupId": "test-12345"
- },
- "context": {
- "externalId": [
- {
- "type": "stormlyGroupId",
- "id": "91Yb32830"
- }
- ]
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/track",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "event": "Product Reviewed",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3,
- "review_body": "Average product, expected much more."
- },
- "timestamp": "2022-01-20T13:39:21.032Z",
- "context": {
- "groupId": "91Yb32830"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- },
- {
- "description": "Group call with userId, groupId and traits",
- "input": {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "message": {
- "type": "group",
- "userId": "5136633649",
- "traits": {
- "name": "Initech",
- "employees": 500,
- "headquarters": "Redwood City, California, United States",
- "ceo": "John Doe",
- "revenue": 70000000,
- "currency": "USD",
- "groupId": "9230AUbd2138h"
- },
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/group",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic dummyApiKey"
- },
- "params": {},
- "body": {
- "JSON": {
- "userId": "5136633649",
- "groupId": "9230AUbd2138h",
- "traits": {
- "name": "Initech",
- "employees": 500,
- "headquarters": "Redwood City, California, United States",
- "ceo": "John Doe",
- "revenue": 70000000,
- "currency": "USD"
- },
- "timestamp": "2022-01-20T13:39:21.032Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- }
-]
diff --git a/test/__tests__/data/stormly_router_input.json b/test/__tests__/data/stormly_router_input.json
deleted file mode 100644
index 3fa583ebc30..00000000000
--- a/test/__tests__/data/stormly_router_input.json
+++ /dev/null
@@ -1,55 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "channel": "web",
- "userId": "5136633649",
- "context": {
- "traits": {
- "name": "John Doe",
- "email": "johndoe@gmail.com",
- "age": 25
- }
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "type": "track",
- "event": "Product Reviewed",
- "properties": {
- "review_id": "12345",
- "product_id": "123",
- "rating": 3.0,
- "review_body": "Average product, expected much more.",
- "groupId": "91Yb32830"
- },
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- }
-]
diff --git a/test/__tests__/data/stormly_router_output.json b/test/__tests__/data/stormly_router_output.json
deleted file mode 100644
index 2a129dfbafd..00000000000
--- a/test/__tests__/data/stormly_router_output.json
+++ /dev/null
@@ -1,63 +0,0 @@
-[
- {
- "batched": false,
- "batchedRequest": {
- "body": {
- "FORM": {},
- "JSON": {
- "timestamp": "2022-01-20T13:39:21.032Z",
- "traits": {
- "age": 25,
- "email": "johndoe@gmail.com",
- "name": "John Doe"
- },
- "userId": "5136633649"
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "https://rudderstack.t.stormly.com/webhook/rudderstack/identify",
- "files": {},
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "version": "1"
- },
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "statusCode": 200
- },
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- },
- "ID": "stormly123"
- },
- "batched": false,
- "error": "Missing required value from \"userIdOnly\"",
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- },
- "statusCode": 400
- }
-]
diff --git a/test/__tests__/data/tiktok_ads_offline_events_router_input.json b/test/__tests__/data/tiktok_ads_offline_events_router_input.json
deleted file mode 100644
index 2986efa804b..00000000000
--- a/test/__tests__/data/tiktok_ads_offline_events_router_input.json
+++ /dev/null
@@ -1,142 +0,0 @@
-[
- {
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "1234567890"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7181537436256731137",
- "eventId": "1616318632825_352",
- "order_id": "abc_xyz",
- "shop_id": "123abc",
- "currency": "USD",
- "value": 46.0,
- "price": 8,
- "quantity": 2,
- "content_type": "product1234",
- "product_id": "1077218",
- "name": "socks",
- "category": "Men's cloth"
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- },
- {
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "1234567890",
- "email": "random@mail.com"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7181537436256731137",
- "eventId": "1616318632825_352",
- "products": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "product1",
- "product_id": "1077218",
- "name": "socks",
- "category": "Men's cloth"
- },
- {
- "price": 18,
- "quantity": 12,
- "content_type": "product2",
- "product_id": "1077219",
- "name": "socks1",
- "category": "Men's cloth1"
- }
- ]
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- },
- {
- "metadata": {
- "jobId": 3
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "1234567890"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "6071537445256731123",
- "eventId": "1616318632825_352",
- "currency": "USD",
- "value": 46.0,
- "price": 8,
- "content_type": "product1234"
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- },
- {
- "metadata": {
- "jobId": 4
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "context": {
- "traits": {
- "phone": "1234567890"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "2345676543",
- "eventId": "1616318632825_352"
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- }
-]
diff --git a/test/__tests__/data/tiktok_ads_offline_events_router_output.json b/test/__tests__/data/tiktok_ads_offline_events_router_output.json
deleted file mode 100644
index 9fc45461be0..00000000000
--- a/test/__tests__/data/tiktok_ads_offline_events_router_output.json
+++ /dev/null
@@ -1,193 +0,0 @@
-[
- {
- "batched": true,
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7181537436256731137",
- "partner_name": "RudderStack",
- "batch": [
- {
- "event_set_id": "7181537436256731137",
- "event": "Subscribe",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- },
- "properties": {
- "order_id": "abc_xyz",
- "shop_id": "123abc",
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "product1234",
- "content_id": "1077218",
- "content_name": "socks",
- "content_category": "Men's cloth"
- }
- ],
- "event_channel": "web",
- "currency": "USD",
- "value": 46.0
- }
- },
- {
- "event_set_id": "7181537436256731137",
- "event": "Subscribe",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ],
- "emails": ["d9fcca64ec1b250da4261a3f89a8e0f7749c4e0f5a1a918e5397194c8b5a9f16"]
- }
- },
- "properties": {
- "event_channel": "web",
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "product1",
- "content_id": "1077218",
- "content_name": "socks",
- "content_category": "Men's cloth"
- },
- {
- "price": 18,
- "quantity": 12,
- "content_type": "product2",
- "content_id": "1077219",
- "content_name": "socks1",
- "content_category": "Men's cloth1"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "metadata": [
- {
- "jobId": 1
- },
- {
- "jobId": 2
- }
- ],
- "statusCode": 200
- },
- {
- "batched": true,
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "6071537445256731123",
- "partner_name": "RudderStack",
- "batch": [
- {
- "event_set_id": "6071537445256731123",
- "event": "Subscribe",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- },
- "properties": {
- "contents": [
- {
- "price": 8,
- "content_type": "product1234"
- }
- ],
- "event_channel": "web",
- "currency": "USD",
- "value": 46.0
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "metadata": [
- {
- "jobId": 3
- }
- ],
- "statusCode": 200
- },
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "batched": false,
- "error": "Event name is required",
- "metadata": [
- {
- "jobId": 4
- }
- ],
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- },
- "statusCode": 400
- }
-]
diff --git a/test/__tests__/data/tiktok_ads_proxy_input.json b/test/__tests__/data/tiktok_ads_proxy_input.json
deleted file mode 100644
index 6028fa1e4f5..00000000000
--- a/test/__tests__/data/tiktok_ads_proxy_input.json
+++ /dev/null
@@ -1,368 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "successResponse"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": "1077218"
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": "1197218"
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "tiktok_ads"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "invalidDataTypeResponse"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": 1077218
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": 1197218
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "tiktok_ads"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "invalidPermissionsResponse"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": 1077218
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": 1197218
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "tiktok_ads"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "tooManyRequests"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": 1077218
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": 1197218
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "tiktok_ads"
- }
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "502-BadGateway"
- },
- "params": {
- "destination": "tiktok_ads"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": 1077218
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": 1197218
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.2/pixel/batch/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json",
- "test-dest-response-key": "500-NoResponse"
- },
- "params": {
- "destination": "tiktok_ads"
- },
- "body": {
- "JSON": {
- "pixel_code": "A1T8T4UYGVIQA8ORZMX9",
- "partner_name": "RudderStack",
- "event": "CompletePayment",
- "event_id": "1616318632825_357",
- "timestamp": "2020-09-17T19:49:27Z",
- "properties": {
- "contents": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "socks",
- "content_id": 1077218
- },
- {
- "price": 30,
- "quantity": 1,
- "content_type": "dress",
- "content_id": 1197218
- }
- ],
- "currency": "USD",
- "value": 46
- },
- "context": {
- "ad": {
- "callback": "123ATXSfe"
- },
- "page": {
- "url": "http://demo.mywebsite.com/purchase",
- "referrer": "http://demo.mywebsite.com"
- },
- "user": {
- "external_id": "f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc",
- "phone_number": "2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea",
- "email": "dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f"
- },
- "ip": "13.57.97.131",
- "user_agent": "Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/tiktok_ads_proxy_output.json b/test/__tests__/data/tiktok_ads_proxy_output.json
deleted file mode 100644
index 99cc79d5f21..00000000000
--- a/test/__tests__/data/tiktok_ads_proxy_output.json
+++ /dev/null
@@ -1,124 +0,0 @@
-[
- {
- "output": {
- "status": 200,
- "message": "[TIKTOK_ADS Response Handler] - Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "code": 0,
- "message": "OK"
- },
- "status": 200
- }
- }
- },
- {
- "output": {
- "status": 400,
- "message": "Request failed with status: 40002",
- "destinationResponse": {
- "response": {
- "code": 40002,
- "message": "Batch.0.properties.contents.0.content_id: Not a valid string"
- },
- "status": 200
- },
- "statTags": {
- "destType": "TIKTOK_ADS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- },
- {
- "output": {
- "status": 400,
- "message": "Request failed with status: 40001",
- "destinationResponse": {
- "response": {
- "code": 40001,
- "message": "No permission to operate pixel code: BU35TSQHT2A1QT375OMG. You must be an admin or operator of this advertiser account."
- },
- "status": 200
- },
- "statTags": {
- "destType": "TIKTOK_ADS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- },
- {
- "output": {
- "status": 429,
- "message": "Request failed with status: 40100",
- "destinationResponse": {
- "response": {
- "code": 40100,
- "message": "Too many requests. Please retry in some time."
- },
- "status": 200
- },
- "statTags": {
- "destType": "TIKTOK_ADS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "throttled",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- },
- {
- "output": {
- "status": 502,
- "message": "Request failed with status: 502",
- "destinationResponse": {
- "response": "\r\n502 Bad Gateway\r\n\r\n502 Bad Gateway
\r\n
nginx\r\n\r\n\r\n",
- "status": 502
- },
- "statTags": {
- "destType": "TIKTOK_ADS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- },
- {
- "output": {
- "status": 500,
- "message": "Request failed with status: 500",
- "destinationResponse": {
- "response": "[ECONNRESET] :: Connection reset by peer",
- "status": 500
- },
- "statTags": {
- "destType": "TIKTOK_ADS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
-]
\ No newline at end of file
diff --git a/test/__tests__/data/userlist_cdk_output.json b/test/__tests__/data/userlist_cdk_output.json
deleted file mode 100644
index 5de9e806d11..00000000000
--- a/test/__tests__/data/userlist_cdk_output.json
+++ /dev/null
@@ -1,248 +0,0 @@
-[
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.5"
- },
- "traits": {
- "name": "Shehan Study",
- "category": "SampleIdentify",
- "email": "test@rudderstack.com",
- "plan": "Open source",
- "logins": 5,
- "createdAt": 1599264000
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.5"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 0.8999999761581421
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content",
- "name": "some campaign",
- "test": "other value"
- },
- "page": {
- "path": "/html/sajal.html",
- "referrer": "",
- "search": "?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value",
- "title": "",
- "url": "http://localhost:9116/html/sajal.html?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value"
- }
- },
- "type": "group",
- "messageId": "e5034df0-a404-47b4-a463-76df99934fea",
- "originalTimestamp": "2020-10-20T07:54:58.983Z",
- "anonymousId": "my-anonymous-id-new",
- "userId": "sampleusrRudder3",
- "integrations": {
- "All": true
- },
- "groupId": "Sample_groupId23",
- "traits": {
- "KEY_3": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "KEY_2": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "name_trait": "Company",
- "value_trait": ["Comapny-ABC"]
- },
- "sentAt": "2020-10-20T07:54:58.983Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "statusCode": 400,
- "error": "userId is required"
- },
- {
- "statusCode": 400,
- "error": "userId is required"
- },
- {
- "statusCode": 400,
- "error": "userId is required"
- },
- {
- "statusCode": 400,
- "error": "message type page is not supported"
- },
- {
- "statusCode": 400,
- "error": "message type screen is not supported"
- }
-]
diff --git a/test/__tests__/data/userlist_input.json b/test/__tests__/data/userlist_input.json
deleted file mode 100644
index d8dcd4abb8d..00000000000
--- a/test/__tests__/data/userlist_input.json
+++ /dev/null
@@ -1,537 +0,0 @@
-[
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.5"
- },
- "traits": {
- "name": "Shehan Study",
- "category": "SampleIdentify",
- "email": "test@rudderstack.com",
- "plan": "Open source",
- "logins": 5,
- "createdAt": 1599264000
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.5"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 0.8999999761581421
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content",
- "name": "some campaign",
- "test": "other value"
- },
- "page": {
- "path": "/html/sajal.html",
- "referrer": "",
- "search": "?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value",
- "title": "",
- "url": "http://localhost:9116/html/sajal.html?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value"
- }
- },
- "type": "group",
- "messageId": "e5034df0-a404-47b4-a463-76df99934fea",
- "originalTimestamp": "2020-10-20T07:54:58.983Z",
- "anonymousId": "my-anonymous-id-new",
- "userId": "sampleusrRudder3",
- "integrations": {
- "All": true
- },
- "groupId": "Sample_groupId23",
- "traits": {
- "KEY_3": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "KEY_2": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "name_trait": "Company",
- "value_trait": ["Comapny-ABC"]
- },
- "sentAt": "2020-10-20T07:54:58.983Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.5"
- },
- "traits": {
- "name": "Shehan Study",
- "category": "SampleIdentify",
- "email": "test@rudderstack.com",
- "plan": "Open source",
- "logins": 5,
- "createdAt": 1599264000
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.5"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 0.8999999761581421
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content",
- "name": "some campaign",
- "test": "other value"
- },
- "page": {
- "path": "/html/sajal.html",
- "referrer": "",
- "search": "?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value",
- "title": "",
- "url": "http://localhost:9116/html/sajal.html?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value"
- }
- },
- "type": "group",
- "messageId": "e5034df0-a404-47b4-a463-76df99934fea",
- "originalTimestamp": "2020-10-20T07:54:58.983Z",
- "anonymousId": "my-anonymous-id-new",
- "integrations": {
- "All": true
- },
- "groupId": "Sample_groupId23",
- "traits": {
- "KEY_3": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "KEY_2": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "name_trait": "Company",
- "value_trait": ["Comapny-ABC"]
- },
- "sentAt": "2020-10-20T07:54:58.983Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/test",
- "referrer": "Rudder",
- "search": "abc",
- "title": "Test Page",
- "url": "www.rudderlabs.com"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "screen",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "",
- "category": "test-category"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- },
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/userlist_output.json b/test/__tests__/data/userlist_output.json
deleted file mode 100644
index 27eb9320f14..00000000000
--- a/test/__tests__/data/userlist_output.json
+++ /dev/null
@@ -1,251 +0,0 @@
-[
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST",
- "statusCode": 200
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST",
- "statusCode": 200
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.5"
- },
- "traits": {
- "name": "Shehan Study",
- "category": "SampleIdentify",
- "email": "test@rudderstack.com",
- "plan": "Open source",
- "logins": 5,
- "createdAt": 1599264000
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.5"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 0.8999999761581421
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content",
- "name": "some campaign",
- "test": "other value"
- },
- "page": {
- "path": "/html/sajal.html",
- "referrer": "",
- "search": "?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value",
- "title": "",
- "url": "http://localhost:9116/html/sajal.html?utm_source=google&utm_medium=medium&utm_term=keyword&utm_content=some%20content&utm_campaign=some%20campaign&utm_test=other%20value"
- }
- },
- "type": "group",
- "messageId": "e5034df0-a404-47b4-a463-76df99934fea",
- "originalTimestamp": "2020-10-20T07:54:58.983Z",
- "anonymousId": "my-anonymous-id-new",
- "userId": "sampleusrRudder3",
- "integrations": {
- "All": true
- },
- "groupId": "Sample_groupId23",
- "traits": {
- "KEY_3": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "KEY_2": {
- "CHILD_KEY_92": "value_95",
- "CHILD_KEY_102": "value_103"
- },
- "name_trait": "Company",
- "value_trait": ["Comapny-ABC"]
- },
- "sentAt": "2020-10-20T07:54:58.983Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST",
- "statusCode": 200
- },
- {
- "statusCode": 400,
- "error": "Missing required value from \"userIdOnly\""
- },
- {
- "statusCode": 400,
- "error": "Missing required value from \"userIdOnly\""
- },
- {
- "statusCode": 400,
- "error": "Missing required value from \"userIdOnly\""
- },
- {
- "statusCode": 400,
- "error": "message type \"page\" not supported for \"userlist\""
- },
- {
- "statusCode": 400,
- "error": "message type \"screen\" not supported for \"userlist\""
- }
-]
diff --git a/test/__tests__/data/userlist_router_input.json b/test/__tests__/data/userlist_router_input.json
deleted file mode 100644
index 4feb367454d..00000000000
--- a/test/__tests__/data/userlist_router_input.json
+++ /dev/null
@@ -1,128 +0,0 @@
-[
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/userlist_router_output.json b/test/__tests__/data/userlist_router_output.json
deleted file mode 100644
index 2c5ed6149b0..00000000000
--- a/test/__tests__/data/userlist_router_output.json
+++ /dev/null
@@ -1,172 +0,0 @@
-[
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "user_properties": {
- "prop1": "val1",
- "prop2": "val2"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "anonymousId": "anon-id",
- "email": "test@gmail.com",
- "address": {
- "city": "NY",
- "country": "USA",
- "postalCode": 712136,
- "state": "CA",
- "street": ""
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST",
- "statusCode": 200
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- },
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com",
- "anonymousId": "12345"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event",
- "properties": {
- "user_actual_role": "system_admin",
- "user_actual_id": 12345,
- "user_time_spent": 50000
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://incoming.userlist.com/rudderstack/events",
- "headers": {
- "Authorization": "Push userlist-push-key",
- "Content-Type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST",
- "statusCode": 200
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "pushKey": "userlist-push-key"
- }
- }
- }
-]
diff --git a/test/__tests__/data/vitally_cdk_output.json b/test/__tests__/data/vitally_cdk_output.json
deleted file mode 100644
index 1982d006652..00000000000
--- a/test/__tests__/data/vitally_cdk_output.json
+++ /dev/null
@@ -1,83 +0,0 @@
-[
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "event": "this is a track event",
- "type": "track",
- "properties": {
- "thing": "amazing!"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "identify",
- "traits": {
- "name": "Johnny Appleseed"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "group",
- "groupId": "5de17322-934e-11ed-a1eb-0242ac120002",
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "statusCode": 400,
- "error": "message type page is not supported"
- }
-]
diff --git a/test/__tests__/data/vitally_input.json b/test/__tests__/data/vitally_input.json
deleted file mode 100644
index e971823e9cb..00000000000
--- a/test/__tests__/data/vitally_input.json
+++ /dev/null
@@ -1,81 +0,0 @@
-[
- {
- "message": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "event": "this is a track event",
- "type": "track",
- "properties": {
- "thing": "amazing!"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- },
- "destination": {
- "Config": {
- "apiKeyVitally": "abc123"
- },
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- }
- }
- },
- {
- "message": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "identify",
- "traits": {
- "name": "Johnny Appleseed"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- },
- "destination": {
- "Config": {
- "apiKeyVitally": "abc123"
- },
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- }
- }
- },
- {
- "message": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "group",
- "groupId": "5de17322-934e-11ed-a1eb-0242ac120002",
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- },
- "destination": {
- "Config": {
- "apiKeyVitally": "abc123"
- },
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- }
- }
- },
- {
- "message": {
- "type": "page",
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- },
- "destination": {
- "Config": {
- "apiKeyVitally": "abc123"
- },
- "DestinationDefinition": {
- "Config": {
- "cdkEnabled": true
- }
- }
- }
- }
-]
diff --git a/test/__tests__/data/vitally_output.json b/test/__tests__/data/vitally_output.json
deleted file mode 100644
index 5e7eb598c7e..00000000000
--- a/test/__tests__/data/vitally_output.json
+++ /dev/null
@@ -1,83 +0,0 @@
-[
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "event": "this is a track event",
- "type": "track",
- "properties": {
- "thing": "amazing!"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "identify",
- "traits": {
- "name": "Johnny Appleseed"
- },
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "body": {
- "FORM": {},
- "JSON_ARRAY": {},
- "XML": {},
- "JSON": {
- "userId": "0220c056-934e-11ed-a1eb-0242ac120002",
- "type": "group",
- "groupId": "5de17322-934e-11ed-a1eb-0242ac120002",
- "originalTimestamp": "2023-01-13T09:03:17.562Z",
- "sentAt": "2023-01-13T09:03:17.562Z"
- }
- },
- "endpoint": "https://api.vitally.io/rudderstack",
- "files": {},
- "params": {},
- "type": "REST",
- "version": "1",
- "method": "POST",
- "headers": {
- "authorization": "Basic abc123",
- "content-type": "application/json"
- }
- },
- {
- "statusCode": 400,
- "error": "message type \"page\" not supported for \"vitally\""
- }
-]
diff --git a/test/__tests__/data/warehouse/events.js b/test/__tests__/data/warehouse/events.js
index 20a6ce89b30..ef9cc21096c 100644
--- a/test/__tests__/data/warehouse/events.js
+++ b/test/__tests__/data/warehouse/events.js
@@ -60,7 +60,17 @@ const sampleEvents = {
originalTimestamp: "2020-01-24T06:29:02.364Z",
properties: {
currency: "USD",
- revenue: 50
+ revenue: 50,
+ stack: {
+ history: {
+ errorDetails: [
+ {
+ "message": "Cannot set headers after they are sent to the client",
+ "toString": "[function]"
+ }
+ ]
+ }
+ }
},
receivedAt: "2020-01-24T11:59:02.403+05:30",
request_ip: "[::1]:53708",
@@ -180,6 +190,12 @@ const sampleEvents = {
data: {
currency: "USD",
revenue: 50,
+ stack_history_error_details: [
+ {
+ "message": "Cannot set headers after they are sent to the client",
+ "toString": "[function]"
+ }
+ ],
context_app_build: "1.0.0",
context_app_name: "RudderLabs JavaScript SDK",
context_app_namespace: "com.rudderlabs.javascript",
@@ -314,6 +330,12 @@ const sampleEvents = {
data: {
CURRENCY: "USD",
REVENUE: 50,
+ STACK_HISTORY_ERROR_DETAILS: [
+ {
+ "message": "Cannot set headers after they are sent to the client",
+ "toString": "[function]"
+ }
+ ],
CONTEXT_APP_BUILD: "1.0.0",
CONTEXT_APP_NAME: "RudderLabs JavaScript SDK",
CONTEXT_APP_NAMESPACE: "com.rudderlabs.javascript",
@@ -340,7 +362,7 @@ const sampleEvents = {
RECEIVED_AT: "2020-01-24T06:29:02.403Z",
ORIGINAL_TIMESTAMP: "2020-01-24T06:29:02.364Z",
CHANNEL: "web",
- EVENT: "button_clicked"
+ EVENT: "button_clicked",
}
}
],
@@ -448,6 +470,12 @@ const sampleEvents = {
data: {
currency: "USD",
revenue: 50,
+ stack_history_error_details: [
+ {
+ "message": "Cannot set headers after they are sent to the client",
+ "toString": "[function]"
+ }
+ ],
context_app_build: "1.0.0",
context_app_name: "RudderLabs JavaScript SDK",
context_app_namespace: "com.rudderlabs.javascript",
@@ -2053,7 +2081,6 @@ const sampleEvents = {
id: "string",
user_id: "string",
received_at: "datetime",
- event: "string"
},
receivedAt: "2020-01-24T11:59:02.403+05:30"
},
@@ -2121,7 +2148,6 @@ const sampleEvents = {
id: "string",
user_id: "string",
received_at: "datetime",
- event: "string",
boolean_property: "boolean",
},
receivedAt: "2020-01-24T11:59:02.403+05:30"
diff --git a/test/__tests__/data/webhook_input.json b/test/__tests__/data/webhook_input.json
deleted file mode 100644
index 9d34a0ace33..00000000000
--- a/test/__tests__/data/webhook_input.json
+++ /dev/null
@@ -1,1148 +0,0 @@
-[
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60.ngrok.io/n"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60."
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "k1": "v1",
- "k2": {
- "k3": "c3",
- "k4": {
- "k5": "c5"
- }
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60.",
- "webhookMethod": "GET",
- "headers": [
- {
- "from": "X-customHeader",
- "to": "customHeaderVal"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "k1": "v1",
- "k2": {
- "k3": "c3",
- "k4": {
- "k5": "c5"
- }
- }
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60.",
- "webhookMethod": "GET"
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "request_ip": "127.0.0.1"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "header": [
- {
- "from": "test1",
- "to": "value1"
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "request_ip": "127.0.0.1"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "Content-Type",
- "to": "application/xml"
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "Content-Type",
- "to": "application/xml"
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "header": {
- "dynamic_header_key_string": "dynamic_header_value_string",
- "dynamic_header_key_num": 10,
- "dynamic_header_key_object": {
- "k1": "v1"
- }
- },
- "appendPath": "/product/search?string=value"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "fullPath": "https://www.google.com"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "fullPath": "https://www.google.com/",
- "appendPath": "?searchTerms=cats"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "fullPath": "https://www.google.com/",
- "appendPath": "?searchTerms=cats"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "webhookMethod": "PUT",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "fullPath": "https://www.google.com/",
- "appendPath": "?searchTerms=cats"
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "webhookMethod": "DELETE",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "webhookMethod": "POST",
- "headers": [
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "webhookMethod": "PATCH",
- "headers": [
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- }
-]
diff --git a/test/__tests__/data/webhook_output.json b/test/__tests__/data/webhook_output.json
deleted file mode 100644
index 69a55ee3488..00000000000
--- a/test/__tests__/data/webhook_output.json
+++ /dev/null
@@ -1,1075 +0,0 @@
-[
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "user_properties": {
- "total_payments": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "level": 6,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "coin_balance": 9466052,
- "player_total_shields": 0,
- "isLowEndDevice": false,
- "game_fps": 30,
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "graphicsQuality": "HD",
- "current_module_name": "CasinoGameModule",
- "player_total_battles": 0,
- "lifetime_gem_balance": 0,
- "gem_balance": 0,
- "fb_profile": "0",
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "game_name": "FireEagleSlots"
- },
- "integrations": {
- "All": true
- },
- "event": "spin_result",
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "model": "Redmi 6",
- "manufacturer": "Xiaomi",
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "name": "xiaomi"
- },
- "traits": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- }
- },
- "os": {
- "version": "8.1.0",
- "name": "android"
- },
- "network": {
- "carrier": "Banglalink"
- }
- },
- "type": "track",
- "properties": {
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "jackpot_win_type": "Silver",
- "coin_balance": 9466052,
- "bet_level": 1,
- "ishighroller": "False",
- "tournament_id": "T1561970819",
- "battle_id": "N/A",
- "bet_amount": 9,
- "fb_profile": "0",
- "player_total_shields": 0,
- "is_turbo": "False",
- "player_total_battles": 0,
- "bet_multiplier": 1,
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "graphicsQuality": "HD",
- "is_auto_spin": "False",
- "days_in_game": 0,
- "additional_bet_index": 0,
- "isLowEndDevice": "False",
- "game_fps": 30,
- "extra_param": "N/A",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "current_module_name": "CasinoGameModule",
- "game_id": "fireEagleBase",
- "featureGameType": "N/A",
- "gem_balance": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "total_payments": 0,
- "level": 6,
- "win_amount": 0,
- "no_of_spin": 1,
- "game_name": "FireEagleSlots",
- "jackpot_win_amount": 90,
- "lifetime_gem_balance": 0,
- "isf": "False"
- }
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "http://6b0e6a60.ngrok.io",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "user_properties": {
- "total_payments": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "level": 6,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "coin_balance": 9466052,
- "player_total_shields": 0,
- "isLowEndDevice": false,
- "game_fps": 30,
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "graphicsQuality": "HD",
- "current_module_name": "CasinoGameModule",
- "player_total_battles": 0,
- "lifetime_gem_balance": 0,
- "gem_balance": 0,
- "fb_profile": "0",
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "game_name": "FireEagleSlots"
- },
- "integrations": {
- "All": true
- },
- "event": "spin_result",
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "model": "Redmi 6",
- "manufacturer": "Xiaomi",
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "name": "xiaomi"
- },
- "traits": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- }
- },
- "os": {
- "version": "8.1.0",
- "name": "android"
- },
- "network": {
- "carrier": "Banglalink"
- }
- },
- "type": "track",
- "properties": {
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "jackpot_win_type": "Silver",
- "coin_balance": 9466052,
- "bet_level": 1,
- "ishighroller": "False",
- "tournament_id": "T1561970819",
- "battle_id": "N/A",
- "bet_amount": 9,
- "fb_profile": "0",
- "player_total_shields": 0,
- "is_turbo": "False",
- "player_total_battles": 0,
- "bet_multiplier": 1,
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "graphicsQuality": "HD",
- "is_auto_spin": "False",
- "days_in_game": 0,
- "additional_bet_index": 0,
- "isLowEndDevice": "False",
- "game_fps": 30,
- "extra_param": "N/A",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "current_module_name": "CasinoGameModule",
- "game_id": "fireEagleBase",
- "featureGameType": "N/A",
- "gem_balance": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "total_payments": 0,
- "level": 6,
- "win_amount": 0,
- "no_of_spin": 1,
- "game_name": "FireEagleSlots",
- "jackpot_win_amount": 90,
- "lifetime_gem_balance": 0,
- "isf": "False"
- }
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://6b0e6a60.ngrok.io/n",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "user_properties": {
- "total_payments": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "level": 6,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "coin_balance": 9466052,
- "player_total_shields": 0,
- "isLowEndDevice": false,
- "game_fps": 30,
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "graphicsQuality": "HD",
- "current_module_name": "CasinoGameModule",
- "player_total_battles": 0,
- "lifetime_gem_balance": 0,
- "gem_balance": 0,
- "fb_profile": "0",
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "game_name": "FireEagleSlots"
- },
- "integrations": {
- "All": true
- },
- "event": "spin_result",
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "model": "Redmi 6",
- "manufacturer": "Xiaomi",
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "name": "xiaomi"
- },
- "traits": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- }
- },
- "os": {
- "version": "8.1.0",
- "name": "android"
- },
- "network": {
- "carrier": "Banglalink"
- }
- },
- "type": "track",
- "properties": {
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "jackpot_win_type": "Silver",
- "coin_balance": 9466052,
- "bet_level": 1,
- "ishighroller": "False",
- "tournament_id": "T1561970819",
- "battle_id": "N/A",
- "bet_amount": 9,
- "fb_profile": "0",
- "player_total_shields": 0,
- "is_turbo": "False",
- "player_total_battles": 0,
- "bet_multiplier": 1,
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "graphicsQuality": "HD",
- "is_auto_spin": "False",
- "days_in_game": 0,
- "additional_bet_index": 0,
- "isLowEndDevice": "False",
- "game_fps": 30,
- "extra_param": "N/A",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "current_module_name": "CasinoGameModule",
- "game_id": "fireEagleBase",
- "featureGameType": "N/A",
- "gem_balance": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "total_payments": 0,
- "level": 6,
- "win_amount": 0,
- "no_of_spin": 1,
- "game_name": "FireEagleSlots",
- "jackpot_win_amount": 90,
- "lifetime_gem_balance": 0,
- "isf": "False"
- }
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://6b0e6a60.",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "GET",
- "endpoint": "https://6b0e6a60.",
- "headers": {
- "x-customheader": "customHeaderVal"
- },
- "params": {
- "k1": "v1",
- "k2.k3": "c3",
- "k2.k4.k5": "c5"
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "GET",
- "endpoint": "https://6b0e6a60.",
- "headers": {},
- "params": {
- "k1": "v1",
- "k2.k3": "c3",
- "k2.k4.k5": "c5"
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://6b0e6a60.ngrok.io",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "127.0.0.1"
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "request_ip": "127.0.0.1"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://6b0e6a60.ngrok.io",
- "headers": {
- "content-type": "application/xml",
- "test2": "value2"
- },
- "params": {},
- "body": {
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- "ip": "127.0.0.1"
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "request_ip": "127.0.0.1"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "http://6b0e6a60.ngrok.io",
- "headers": {
- "content-type": "application/xml",
- "test2": "value2"
- },
- "params": {},
- "body": {
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "http://6b0e6a60.ngrok.io/product/search?string=value",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2",
- "dynamic_header_key_string": "dynamic_header_value_string"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://www.google.com",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://www.google.com/?searchTerms=cats",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track"
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://www.google.com/?searchTerms=cats",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "PUT"
- },
- {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {},
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://www.google.com/?searchTerms=cats",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "test2": "value2"
- },
- "version": "1",
- "params": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "featureGameType": "N/A",
- "win_amount": 0
- },
- "type": "REST",
- "method": "DELETE"
- },
- {
- "body": {
- "FORM": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "http://6b0e6a60.ngrok.io",
- "files": {},
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "method": "POST",
- "params": {},
- "type": "REST",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "version": "1"
- },
- {
- "body": {
- "FORM": {},
- "JSON": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "JSON_ARRAY": {},
- "XML": {}
- },
- "endpoint": "http://6b0e6a60.ngrok.io",
- "files": {},
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "method": "PATCH",
- "params": {},
- "type": "REST",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "version": "1"
- }
-]
diff --git a/test/__tests__/data/webhook_router_input.json b/test/__tests__/data/webhook_router_input.json
deleted file mode 100644
index c78f30a7cdc..00000000000
--- a/test/__tests__/data/webhook_router_input.json
+++ /dev/null
@@ -1,214 +0,0 @@
-[
- [
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "message": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "manufacturer": "Xiaomi",
- "model": "Redmi 6",
- "name": "xiaomi"
- },
- "network": {
- "carrier": "Banglalink"
- },
- "os": {
- "name": "android",
- "version": "8.1.0"
- },
- "traits": {
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- },
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1"
- }
- },
- "event": "spin_result",
- "integrations": {
- "All": true
- },
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "properties": {
- "additional_bet_index": 0,
- "battle_id": "N/A",
- "bet_amount": 9,
- "bet_level": 1,
- "bet_multiplier": 1,
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "days_in_game": 0,
- "extra_param": "N/A",
- "fb_profile": "0",
- "featureGameType": "N/A",
- "game_fps": 30,
- "game_id": "fireEagleBase",
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": "False",
- "is_auto_spin": "False",
- "is_turbo": "False",
- "isf": "False",
- "ishighroller": "False",
- "jackpot_win_amount": 90,
- "jackpot_win_type": "Silver",
- "level": 6,
- "lifetime_gem_balance": 0,
- "no_of_spin": 1,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "tournament_id": "T1561970819",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2,
- "win_amount": 0
- },
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "type": "track",
- "user_properties": {
- "coin_balance": 9466052,
- "current_module_name": "CasinoGameModule",
- "fb_profile": "0",
- "game_fps": 30,
- "game_name": "FireEagleSlots",
- "gem_balance": 0,
- "graphicsQuality": "HD",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "isLowEndDevice": false,
- "level": 6,
- "lifetime_gem_balance": 0,
- "player_total_battles": 0,
- "player_total_shields": 0,
- "start_date": "2019-08-01",
- "total_payments": 0,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "versionSessionCount": 2
- }
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60.ngrok.io/n"
- }
- }
- }
- ]
-]
diff --git a/test/__tests__/data/webhook_router_output.json b/test/__tests__/data/webhook_router_output.json
deleted file mode 100644
index c398b289818..00000000000
--- a/test/__tests__/data/webhook_router_output.json
+++ /dev/null
@@ -1,257 +0,0 @@
-[
- [
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "user_properties": {
- "total_payments": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "level": 6,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "coin_balance": 9466052,
- "player_total_shields": 0,
- "isLowEndDevice": false,
- "game_fps": 30,
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "graphicsQuality": "HD",
- "current_module_name": "CasinoGameModule",
- "player_total_battles": 0,
- "lifetime_gem_balance": 0,
- "gem_balance": 0,
- "fb_profile": "0",
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "game_name": "FireEagleSlots"
- },
- "integrations": {
- "All": true
- },
- "event": "spin_result",
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "model": "Redmi 6",
- "manufacturer": "Xiaomi",
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "name": "xiaomi"
- },
- "traits": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- }
- },
- "os": {
- "version": "8.1.0",
- "name": "android"
- },
- "network": {
- "carrier": "Banglalink"
- }
- },
- "type": "track",
- "properties": {
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "jackpot_win_type": "Silver",
- "coin_balance": 9466052,
- "bet_level": 1,
- "ishighroller": "False",
- "tournament_id": "T1561970819",
- "battle_id": "N/A",
- "bet_amount": 9,
- "fb_profile": "0",
- "player_total_shields": 0,
- "is_turbo": "False",
- "player_total_battles": 0,
- "bet_multiplier": 1,
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "graphicsQuality": "HD",
- "is_auto_spin": "False",
- "days_in_game": 0,
- "additional_bet_index": 0,
- "isLowEndDevice": "False",
- "game_fps": 30,
- "extra_param": "N/A",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "current_module_name": "CasinoGameModule",
- "game_id": "fireEagleBase",
- "featureGameType": "N/A",
- "gem_balance": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "total_payments": 0,
- "level": 6,
- "win_amount": 0,
- "no_of_spin": 1,
- "game_name": "FireEagleSlots",
- "jackpot_win_amount": 90,
- "lifetime_gem_balance": 0,
- "isf": "False"
- }
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "http://6b0e6a60.ngrok.io",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json",
- "test2": "value2"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "webhookUrl": "http://6b0e6a60.ngrok.io",
- "headers": [
- {
- "from": "",
- "to": ""
- },
- {
- "from": "test2",
- "to": "value2"
- }
- ]
- }
- }
- },
- {
- "batchedRequest": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "JSON": {
- "timestamp": "2019-09-01T15:46:51.693229+05:30",
- "user_properties": {
- "total_payments": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "level": 6,
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "coin_balance": 9466052,
- "player_total_shields": 0,
- "isLowEndDevice": false,
- "game_fps": 30,
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "graphicsQuality": "HD",
- "current_module_name": "CasinoGameModule",
- "player_total_battles": 0,
- "lifetime_gem_balance": 0,
- "gem_balance": 0,
- "fb_profile": "0",
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "game_name": "FireEagleSlots"
- },
- "integrations": {
- "All": true
- },
- "event": "spin_result",
- "message_id": "a80f82be-9bdc-4a9f-b2a5-15621ee41df8",
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "context": {
- "device": {
- "model": "Redmi 6",
- "manufacturer": "Xiaomi",
- "id": "df16bffa-5c3d-4fbb-9bce-3bab098129a7R",
- "name": "xiaomi"
- },
- "traits": {
- "anonymousId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "address": {
- "city": "Dhaka",
- "country": "Bangladesh"
- }
- },
- "os": {
- "version": "8.1.0",
- "name": "android"
- },
- "network": {
- "carrier": "Banglalink"
- }
- },
- "type": "track",
- "properties": {
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "jackpot_win_type": "Silver",
- "coin_balance": 9466052,
- "bet_level": 1,
- "ishighroller": "False",
- "tournament_id": "T1561970819",
- "battle_id": "N/A",
- "bet_amount": 9,
- "fb_profile": "0",
- "player_total_shields": 0,
- "is_turbo": "False",
- "player_total_battles": 0,
- "bet_multiplier": 1,
- "start_date": "2019-08-01",
- "versionSessionCount": 2,
- "graphicsQuality": "HD",
- "is_auto_spin": "False",
- "days_in_game": 0,
- "additional_bet_index": 0,
- "isLowEndDevice": "False",
- "game_fps": 30,
- "extra_param": "N/A",
- "idfa": "2bf99787-33d2-4ae2-a76a-c49672f97252",
- "current_module_name": "CasinoGameModule",
- "game_id": "fireEagleBase",
- "featureGameType": "N/A",
- "gem_balance": 0,
- "internetReachability": "ReachableViaLocalAreaNetwork",
- "total_payments": 0,
- "level": 6,
- "win_amount": 0,
- "no_of_spin": 1,
- "game_name": "FireEagleSlots",
- "jackpot_win_amount": 90,
- "lifetime_gem_balance": 0,
- "isf": "False"
- }
- },
- "FORM": {}
- },
- "files": {},
- "endpoint": "https://6b0e6a60.ngrok.io/n",
- "userId": "c82cbdff-e5be-4009-ac78-cdeea09ab4b1",
- "headers": {
- "content-type": "application/json"
- },
- "version": "1",
- "params": {},
- "type": "REST",
- "method": "POST"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "webhookUrl": "https://6b0e6a60.ngrok.io/n"
- }
- }
- }
- ]
-]
diff --git a/test/__tests__/data/woopra.json b/test/__tests__/data/woopra.json
deleted file mode 100644
index 5819eba13a6..00000000000
--- a/test/__tests__/data/woopra.json
+++ /dev/null
@@ -1,281 +0,0 @@
-[
- {
- "description": "Create a new Visitor with projectName inside Integration Object and no externalId",
- "input": {
- "message": {
- "anonymousId": "21e13f4bc7ceddad",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "21e13f4bc7ceddad"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
- },
- "event": "First Investment",
- "integrations": {
- "woopra": {
- "projectName": "abc.com"
- }
- },
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "traits": {
- "name": "John Doe",
- "email": "test@r.com",
- "hasPurchased": "yes",
- "address": "H.No. abc Street PQRS ",
- "state": "Delhi",
- "title": "Mr"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "identify"
- },
- "destination": {
- "Config": {
- "projectName": "int.com"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {},
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "GET",
- "params": {
- "os": "Android",
- "app": "RuddCDN",
- "browser": "Chrome86.0.4240.111",
- "cookie": "21e13f4bc7ceddad",
- "Project": "abc.com",
- "cv_email": "test@r.com",
- "cv_name": "John Doe",
- "cv_state": "Delhi",
- "cv_title": "Mr",
- "cv_hasPurchased": "yes",
- "timestamp": "1601371229907",
- "cv_address": "H.No. abc Street PQRS "
- },
- "headers": {},
- "version": "1",
- "endpoint": "https://www.woopra.com/track/identify"
- }
- },
- {
- "description": "Send track event with app name but no app build and woopraid inside externalid",
- "input": {
- "message": {
- "anonymousId": "21e13f4bc7ceddad",
- "channel": "mobile",
- "context": {
- "externalId": [
- {
- "type": "woopraId",
- "id": "abcd123451"
- }
- ],
- "app": {
- "build": "4"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "anonymousId": "21e13f4bc7ceddad",
- "customProp": "customValue"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "event": "First Investment",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "properties": {
- "currency": "EUR",
- "revenue": 20.37566
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "track"
- },
- "destination": {
- "Config": {
- "projectName": "int.com"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {},
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "GET",
- "params": {
- "os": "Android",
- "event": "First Investment",
- "cookie": "abcd123451",
- "Project": "int.com",
- "timestamp": "1601371229907",
- "ce_currency": "EUR",
- "ce_revenue": 20.37566,
- "cv_customProp": "customValue",
- "cv_anonymousId": "21e13f4bc7ceddad"
- },
- "headers": {},
- "version": "1",
- "endpoint": "https://www.woopra.com/track/ce"
- }
- },
- {
- "description": "Send Page event with projectName from Config and no cv_id sources",
- "input": {
- "message": {
- "anonymousId": "21e13f4bc7ceddad",
- "channel": "mobile",
- "context": {
- "app": {
- "build": "4",
- "name": "RuddCDN"
- },
- "page": {
- "referrer": "google.com"
- },
- "device": {
- "id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
- "name": "generic_x86_arm"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "1.0.6"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "timezone": "Asia/Kolkata",
- "traits": {
- "customProp": "customValue"
- },
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
- },
- "name": "Home",
- "messageId": "1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb",
- "originalTimestamp": "2020-09-28T19:53:31.900Z",
- "properties": {
- "title": "Home | RudderStack",
- "url": "http://www.rudderstack.com"
- },
- "receivedAt": "2020-09-29T14:50:43.005+05:30",
- "sentAt": "2020-09-28T19:53:44.998Z",
- "timestamp": "2020-09-29T14:50:29.907+05:30",
- "type": "page"
- },
- "destination": {
- "Config": {
- "projectName": "abc.com"
- }
- }
- },
- "output": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {},
- "JSON_ARRAY": {}
- },
- "type": "REST",
- "files": {},
- "method": "GET",
- "params": {
- "os": "Android",
- "app": "RuddCDN",
- "event": "Viewed Home Page",
- "ce_url": "http://www.rudderstack.com",
- "timestamp": "1601371229907",
- "Project": "abc.com",
- "ce_title": "Home | RudderStack",
- "cv_customProp": "customValue",
- "cookie": "21e13f4bc7ceddad",
- "ce_referrer": "google.com"
- },
- "headers": {},
- "version": "1",
- "endpoint": "https://www.woopra.com/track/ce"
- }
- },
- {
- "description": "Unsupported Message Type",
- "input": {
- "message": {
- "anonymousId": "21e13f4bc7ceddad",
- "channel": "mobile",
- "event": "First Investment",
- "integrations": {
- "woopra": "int.com"
- },
- "type": "group"
- },
- "destination": {
- "Config": {
- "projectName": "int.com"
- }
- }
- },
- "output": {
- "error": "Message type group is not supported"
- }
- },
- {
- "description": "Event Name Not Provided ",
- "input": {
- "message": {
- "anonymousId": "21e13f4bc7ceddad",
- "channel": "mobile",
- "integrations": {
- "woopra": "int.com"
- },
- "type": "track"
- },
- "destination": {
- "Config": {
- "projectName": "int.com"
- }
- }
- },
- "output": {
- "error": "Event Name can not be empty"
- }
- }
-]
diff --git a/test/__tests__/data/wootric.json b/test/__tests__/data/wootric.json
deleted file mode 100644
index c7c63694f1a..00000000000
--- a/test/__tests__/data/wootric.json
+++ /dev/null
@@ -1,1467 +0,0 @@
-[
- {
- "description": "Wrong Account Token Passed",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken12"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {},
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Access token could not be generated due to {\"error\":\"Not found\",\"status\":404}"
- }
- },
- {
- "description": "Identify call for creating user",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Bangalore",
- "name": "Dummy User 2",
- "email": "dummyUser2@gmail.com",
- "phone": "+19123456777",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "email": "dummyUser2@gmail.com",
- "phone_number": "+19123456777",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Identify call for creating user without-sending email and sending phone number",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Bangalore",
- "name": "Dummy User 2",
- "phone": "+19123456777",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "phone_number": "+19123456777",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Identify call for creating user without-sending phone number and sending email",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "email": "dummyUser2@gmail.com",
- "city": "Bangalore",
- "name": "Dummy User 2",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "email": "dummyUser2@gmail.com",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Identify call for creating user without sending traits",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "email/phone number are missing. At least one parameter must be provided",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Identify call for creating user without-sending (email and phone number)",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "email/phone number are missing. At least one parameter must be provided",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Identify call for updating existing user with wootric end user id",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "title": "VP",
- "gender": "Male"
- },
- "externalId": [
- {
- "type": "wootricEndUserId",
- "id": "490635419"
- }
- ],
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/490635419",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "last_surveyed": "1642685961",
- "properties[Department]": "Marketing",
- "properties[product_plan]": "Web",
- "properties[revenue amount]": "5000",
- "properties[title]": "VP",
- "properties[gender]": "Male"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Identify call for updating existing user with (wootric externalId/ rudderstack userId)",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "title": "VP",
- "gender": "Male"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "last_surveyed": "1642685961",
- "properties[title]": "VP",
- "properties[gender]": "Male",
- "properties[city]": "Mumbai",
- "properties[name]": "Dummy User 1",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Identify call for updating user traits/properties",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Udaipur",
- "name": "Dummy User 1 New",
- "title": "SDE-2",
- "gender": "Male",
- "company": "Rudderstack"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "last_surveyed": "1642685961",
- "properties[city]": "Udaipur",
- "properties[name]": "Dummy User 1 New",
- "properties[title]": "SDE-2",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track call with existing userId and event type as create response",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462/responses",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "score": 7,
- "ip_address": "0.0.0.0",
- "origin_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "text": "Simple, Easy to use, Reliable, Affordable Product",
- "created_at": "1611149961",
- "end_user[properties][city]": "Mumbai",
- "end_user[properties][name]": "Dummy User 1",
- "end_user[properties][title]": "SDE",
- "end_user[properties][gender]": "Male",
- "end_user[properties][company]": "Rudderstack"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track call with non-existing userId",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "No user found with userId : dummyId2",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track call with non-existing wootricEndUserId",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "externalId": [{ "type": "wootricEndUserId", "id": "12345" }],
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "No user found with wootric end user Id : 12345",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track call with existing userId and event type as create response and score out of bound",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 12,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Invalid Score",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track call with existing userId and event type as create decline",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 9,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create decline"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462/declines",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "origin_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html"
- }
- },
- "files": {}
- }
- },
- {
- "description": "Track call with non-existing userId and event type as create decline",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "properties": {
- "feedbackScore": 9,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create decline"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "No user found with userId : dummyId2",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track call with event type other than create response or decline",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "phone": "+19123456789",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "random"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Event Type not supported",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- },
- {
- "description": "Track call with missing event type in integration object",
- "input": {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "wootric-1234"
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 3,
- "feedbackText": "Too Slow!!!"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "phone": "+19123456789",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- "output": {
- "statusCode": 400,
- "error": "Event Type is missing from Integration object",
- "statTags": {
- "destination": "wootric",
- "stage": "transform",
- "scope": "exception"
- }
- }
- }
-]
diff --git a/test/__tests__/data/wootric_router_input.json b/test/__tests__/data/wootric_router_input.json
deleted file mode 100644
index 360c07afa53..00000000000
--- a/test/__tests__/data/wootric_router_input.json
+++ /dev/null
@@ -1,1076 +0,0 @@
-[
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 1
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Bangalore",
- "name": "Dummy User 2",
- "email": "dummyUser2@gmail.com",
- "phone": "+19123456777",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 2
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Bangalore",
- "name": "Dummy User 2",
- "phone": "+19123456777",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 3
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "email": "dummyUser2@gmail.com",
- "city": "Bangalore",
- "name": "Dummy User 2",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 5
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 6
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 7
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "email": "dummyuser1_01@gmail.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 8
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "phone": "+19777777778"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 9
- },
- "message": {
- "type": "identify",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Udaipur",
- "name": "Dummy User 1 New",
- "title": "SDE-2",
- "gender": "Male",
- "company": "Rudderstack"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 10
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 11
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 12
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 12,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create response"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 13
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 9,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create decline"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 14
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId2",
- "channel": "web",
- "properties": {
- "feedbackScore": 9,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "create decline"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 15
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 7,
- "feedbackText": "Simple, Easy to use, Reliable, Affordable Product"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "phone": "+19123456789",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true,
- "Wootric": {
- "eventType": "random"
- }
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": {
- "jobId": 16
- },
- "message": {
- "type": "track",
- "sentAt": "2022-01-20T13:39:21.033Z",
- "userId": "dummyId1",
- "channel": "web",
- "properties": {
- "feedbackScore": 3,
- "feedbackText": "Too Slow!!!"
- },
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "app": {
- "name": "RudderLabs JavaScript SDK",
- "build": "1.0.0",
- "version": "1.2.20",
- "namespace": "com.rudderlabs.javascript"
- },
- "page": {
- "url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "path": "/Testing/App_for_LaunchDarkly/ourSdk.html",
- "title": "Document",
- "search": "",
- "tab_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "referrer": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/",
- "initial_referrer": "$direct",
- "referring_domain": "127.0.0.1:7307",
- "initial_referring_domain": ""
- },
- "locale": "en-US",
- "ip": "0.0.0.0",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 536,
- "innerHeight": 689
- },
- "traits": {
- "city": "Mumbai",
- "name": "Dummy User 1",
- "email": "dummyUser1@gmail.com",
- "phone": "+19123456789",
- "title": "SDE",
- "gender": "Male",
- "company": "Rudderstack",
- "createdAt": "2021-01-20T13:39:21.032Z"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.2.20"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
- },
- "rudderId": "553b5522-c575-40a7-8072-9741c5f9a647",
- "messageId": "831f1fa5-de84-4f22-880a-4c3f23fc3f04",
- "anonymousId": "bf412108-0357-4330-b119-7305e767823c",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-01-20T13:39:21.032Z"
- }
- }
-]
diff --git a/test/__tests__/data/wootric_router_output.json b/test/__tests__/data/wootric_router_output.json
deleted file mode 100644
index 4d23a783c8d..00000000000
--- a/test/__tests__/data/wootric_router_output.json
+++ /dev/null
@@ -1,493 +0,0 @@
-[
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "email": "dummyUser2@gmail.com",
- "phone_number": "+19123456777",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "phone_number": "+19123456777",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "email": "dummyUser2@gmail.com",
- "last_surveyed": "1642685961",
- "external_created_at": "1611149961",
- "external_id": "dummyId2",
- "properties[city]": "Bangalore",
- "properties[name]": "Dummy User 2",
- "properties[title]": "SDE",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 3
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": [
- {
- "jobId": 5
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "email/phone number are missing. At least one parameter must be provided",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": [
- {
- "jobId": 6
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "email/phone number are missing. At least one parameter must be provided",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "email": "dummyuser1_01@gmail.com",
- "last_surveyed": "1642685961"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 7
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "phone_number": "+19777777778",
- "last_surveyed": "1642685961"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 8
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "last_surveyed": "1642685961",
- "properties[city]": "Udaipur",
- "properties[name]": "Dummy User 1 New",
- "properties[title]": "SDE-2",
- "properties[gender]": "Male",
- "properties[company]": "Rudderstack"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 9
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462/responses",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "score": 7,
- "ip_address": "0.0.0.0",
- "origin_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html",
- "text": "Simple, Easy to use, Reliable, Affordable Product",
- "created_at": "1611149961",
- "end_user[properties][city]": "Mumbai",
- "end_user[properties][name]": "Dummy User 1",
- "end_user[properties][title]": "SDE",
- "end_user[properties][gender]": "Male",
- "end_user[properties][company]": "Rudderstack"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 10
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "metadata": [
- {
- "jobId": 11
- }
- ],
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "batched": false,
- "statusCode": 400,
- "error": "No user found with userId : dummyId2",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": [
- {
- "jobId": 12
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "Invalid Score",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.wootric.com/v1/end_users/486438462/declines",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded",
- "Authorization": "Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "origin_url": "http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html"
- }
- },
- "files": {}
- },
- "metadata": [
- {
- "jobId": 13
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG",
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- }
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": [
- {
- "jobId": 14
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "No user found with userId : dummyId2",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "metadata": [
- {
- "jobId": 15
- }
- ],
- "batched": false,
- "statusCode": 400,
- "error": "Event Type not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- },
- {
- "metadata": [
- {
- "jobId": 16
- }
- ],
- "destination": {
- "Config": {
- "username": "wootricfakeuser@example.com",
- "password": "password@123",
- "accountToken": "NPS-dummyToken"
- },
- "ID": "2D7TqLto9tnkBuR1ciMrbiA4cbG"
- },
- "batched": false,
- "statusCode": 400,
- "error": "Event Type is missing from Integration object",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation"
- }
- }
-]
diff --git a/test/__tests__/data/zapier_cdk_output.json b/test/__tests__/data/zapier_cdk_output.json
deleted file mode 100644
index 13b4e3d7617..00000000000
--- a/test/__tests__/data/zapier_cdk_output.json
+++ /dev/null
@@ -1,242 +0,0 @@
-[
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "abcd.zap-hook",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "first",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "def.zap-hook",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "def",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "page.zap-hook",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "page_test",
- "userId": "identified user id",
- "type": "page",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "screen.zap-hook",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "name": "screen_test",
- "userId": "identified user id",
- "type": "screen",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "ghi.zap-hook",
- "headers": {
- "content-type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event": "def",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": {
- "trait1": "new-val"
- },
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "properties": {
- "abc": "123",
- "key": {
- "abc": 123
- },
- "array": [
- {
- "abc": 123
- },
- {
- "def": 123
- }
- ]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
-]
diff --git a/test/__tests__/data/zapier_input.json b/test/__tests__/data/zapier_input.json
deleted file mode 100644
index 82ae2e11acb..00000000000
--- a/test/__tests__/data/zapier_input.json
+++ /dev/null
@@ -1,176 +0,0 @@
-[
- {
- "message": {
- "event": "first",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": { "trait1": "new-val" },
- "ip": "14.5.67.21",
- "library": { "name": "http" }
- },
- "properties": {
- "abc": "123",
- "key": { "abc": 123 },
- "array": [{ "abc": 123 }, { "def": 123 }]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "destination": {
- "DestinationDefinition": { "Config": { "cdkEnabled": true } },
- "Config": { "zapUrl": "abcd.zap-hook", "trackEventsToZap": {}, "pageScreenEventsToZap": {} },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "def",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": { "trait1": "new-val" },
- "ip": "14.5.67.21",
- "library": { "name": "http" }
- },
- "properties": {
- "abc": "123",
- "key": { "abc": 123 },
- "array": [{ "abc": 123 }, { "def": 123 }]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "destination": {
- "DestinationDefinition": { "Config": { "cdkEnabled": true } },
- "Config": {
- "zapUrl": "abcd.zap-hook",
- "trackEventsToZap": [
- { "from": "def", "to": "def.zap-hook" },
- { "from": "ghi", "to": "ghi.zap-hook" }
- ],
- "pageScreenEventsToZap": {}
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "name": "page_test",
- "userId": "identified user id",
- "type": "page",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": { "trait1": "new-val" },
- "ip": "14.5.67.21",
- "library": { "name": "http" }
- },
- "properties": {
- "abc": "123",
- "key": { "abc": 123 },
- "array": [{ "abc": 123 }, { "def": 123 }]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "destination": {
- "DestinationDefinition": { "Config": { "cdkEnabled": true } },
- "Config": {
- "zapUrl": "abcd.zap-hook",
- "trackEventsToZap": [
- { "from": "def", "to": "def.zap-hook" },
- { "from": "ghi", "to": "ghi.zap-hook" }
- ],
- "pageScreenEventsToZap": [
- { "from": "page_test", "to": "page.zap-hook" },
- { "from": "ghi", "to": "ghi.zap-hook" }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "name": "screen_test",
- "userId": "identified user id",
- "type": "screen",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": { "trait1": "new-val" },
- "ip": "14.5.67.21",
- "library": { "name": "http" }
- },
- "properties": {
- "abc": "123",
- "key": { "abc": 123 },
- "array": [{ "abc": 123 }, { "def": 123 }]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "destination": {
- "DestinationDefinition": { "Config": { "cdkEnabled": true } },
- "Config": {
- "zapUrl": "abcd.zap-hook",
- "trackEventsToZap": [
- { "from": "def", "to": "def.zap-hook" },
- { "from": "ghi", "to": "ghi.zap-hook" }
- ],
- "pageScreenEventsToZap": [
- { "from": "page_test", "to": "page.zap-hook" },
- { "from": "screen_test", "to": "screen.zap-hook" }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- },
- {
- "message": {
- "event": "def",
- "userId": "identified user id",
- "type": "track",
- "anonymousId": "anon-id-new",
- "context": {
- "traits": { "trait1": "new-val" },
- "ip": "14.5.67.21",
- "library": { "name": "http" }
- },
- "properties": {
- "abc": "123",
- "key": { "abc": 123 },
- "array": [{ "abc": 123 }, { "def": 123 }]
- },
- "timestamp": "2020-02-02T00:23:09.544Z",
- "originalTimestamp": "2020-04-17T14:42:44.724Z",
- "sentAt": "2020-04-17T14:42:44.724Z"
- },
- "destination": {
- "DestinationDefinition": { "Config": { "cdkEnabled": true } },
- "Config": {
- "zapUrl": "abcd.zap-hook",
- "trackEventsToZap": [
- { "from": "def", "to": "def.zap-hook" },
- { "from": "def", "to": "ghi.zap-hook" }
- ],
- "pageScreenEventsToZap": [{}]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- }
- }
-]
diff --git a/test/__tests__/dcm_floodlight-cdk.test.ts b/test/__tests__/dcm_floodlight-cdk.test.ts
deleted file mode 100644
index 373117ca1bc..00000000000
--- a/test/__tests__/dcm_floodlight-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'dcm_floodlight';
-const destName = 'DCM Floodlight';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/dcm_floodlight.test.js b/test/__tests__/dcm_floodlight.test.js
deleted file mode 100644
index 85ece5aa427..00000000000
--- a/test/__tests__/dcm_floodlight.test.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
diff --git a/test/__tests__/delighted.test.js b/test/__tests__/delighted.test.js
deleted file mode 100644
index 9b5cdefb079..00000000000
--- a/test/__tests__/delighted.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const integration = "delighted";
-const name = "delighted";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-//for router test
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/drip.test.js b/test/__tests__/drip.test.js
deleted file mode 100644
index 3f5b34c7ebb..00000000000
--- a/test/__tests__/drip.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const integration = "drip";
-const name = "drip";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/dynamic_yield-cdk.test.ts b/test/__tests__/dynamic_yield-cdk.test.ts
deleted file mode 100644
index 525603fd482..00000000000
--- a/test/__tests__/dynamic_yield-cdk.test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'dynamic_yield';
-const destName = 'Dynamic Yield';
-
-// Processor Test files
-const testDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}.json`), {
- encoding: 'utf8',
-});
-const testData = JSON.parse(testDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- testData.forEach((dataPoint, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- try {
- const output = await processCdkV2Workflow(
- integration,
- dataPoint.input,
- tags.FEATURES.PROCESSOR,
- );
- expect(output).toEqual(dataPoint.output);
- } catch (error: any) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/eloqua-cdk.test.ts b/test/__tests__/eloqua-cdk.test.ts
deleted file mode 100644
index 455e738b263..00000000000
--- a/test/__tests__/eloqua-cdk.test.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'eloqua';
-const destName = 'Eloqua';
-
-// Processor Test files
-const processorTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`),
- {
- encoding: 'utf8',
- },
-);
-const processorTestData = JSON.parse(processorTestDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- processorTestData.forEach((dataPoint, index) => {
- it(`${destName} processor payload: ${index}`, async () => {
- try {
- const output = await processCdkV2Workflow(
- integration,
- dataPoint.input,
- tags.FEATURES.PROCESSOR,
- );
- expect(output).toEqual(dataPoint.output);
- } catch (error: any) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/facebook_conversions.test.js b/test/__tests__/facebook_conversions.test.js
deleted file mode 100644
index 5bb905b5c81..00000000000
--- a/test/__tests__/facebook_conversions.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const integration = "facebook_conversions";
-const name = "facebook_conversions";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-Date.now = jest.fn(() => new Date("2023-11-12T15:46:51.000Z")); // 2023-11-12T15:46:51.693229+05:30
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/freshmarketer.test.js b/test/__tests__/freshmarketer.test.js
deleted file mode 100644
index 5938938b6ef..00000000000
--- a/test/__tests__/freshmarketer.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "freshmarketer";
-const name = "Freshmarketer";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// // Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/freshsales.test.js b/test/__tests__/freshsales.test.js
deleted file mode 100644
index 2a9234133a3..00000000000
--- a/test/__tests__/freshsales.test.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const integration = "freshsales";
-const name = "Freshsales";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/fullstory-cdk.test.ts b/test/__tests__/fullstory-cdk.test.ts
deleted file mode 100644
index f7e0491aac9..00000000000
--- a/test/__tests__/fullstory-cdk.test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'fullstory';
-const destName = 'Fullstory';
-
-// Processor Test files
-const testDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}.json`), {
- encoding: 'utf8',
-});
-const testData = JSON.parse(testDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- testData.forEach((dataPoint, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- try {
- const output = await processCdkV2Workflow(
- integration,
- dataPoint.input,
- tags.FEATURES.PROCESSOR,
- );
- expect(output).toEqual(dataPoint.output);
- } catch (error: any) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/ga4.test.js b/test/__tests__/ga4.test.js
deleted file mode 100644
index e685c5e432d..00000000000
--- a/test/__tests__/ga4.test.js
+++ /dev/null
@@ -1,31 +0,0 @@
-const integration = "ga4";
-const name = "Google Analytics 4";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-Date.now = jest.fn(() => new Date("2022-04-29T05:17:09Z"));
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- try {
- const output = transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/gainsight.test.js b/test/__tests__/gainsight.test.js
deleted file mode 100644
index b0ff8d27b78..00000000000
--- a/test/__tests__/gainsight.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const integration = "gainsight";
-const name = "Gainsight CS";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/gainsight_px.test.js b/test/__tests__/gainsight_px.test.js
deleted file mode 100644
index 24b96d008df..00000000000
--- a/test/__tests__/gainsight_px.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const integration = "gainsight_px";
-const name = "Gainsight PX";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/hubspot.test.js b/test/__tests__/hubspot.test.js
deleted file mode 100644
index 83f02f5a147..00000000000
--- a/test/__tests__/hubspot.test.js
+++ /dev/null
@@ -1,139 +0,0 @@
-jest.mock("axios");
-
-const integration = "hs";
-const name = "Hubspot";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Legacy Test files
-const inputLegacyRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input_legacy.json`)
-);
-const outputLegacyRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output_legacy.json`)
-);
-const inputLegacyRouterData = JSON.parse(inputLegacyRouterDataFile);
-const expectedLegacyRouterData = JSON.parse(outputLegacyRouterDataFile);
-
-// Router Test files (New API)
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-// Router Test files for rETL sources
-const inputRouterDataFilerETL = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_rETL_input.json`)
-);
-const outputRouterDataFilerETL = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_rETL_output.json`)
-);
-const inputRouterDatarETL = JSON.parse(inputRouterDataFilerETL);
-const expectedRouterDatarETL = JSON.parse(outputRouterDataFilerETL);
-
-// Router Test files for rETL sources (legacy)
-const inputRouterDataFilerETLLegacy = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_legacy_rETL_input.json`)
-);
-const outputRouterDataFilerETLLegacy = fs.readFileSync(
- path.resolve(
- __dirname,
- `./data/${integration}_router_legacy_rETL_output.json`
- )
-);
-const inputRouterDatarETLLegacy = JSON.parse(inputRouterDataFilerETLLegacy);
-const expectedRouterDatarETLLegacy = JSON.parse(outputRouterDataFilerETLLegacy);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- inputData.forEach(async (input, index) => {
- it(`Payload - ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- // Legacy API
- // It has different test cases as this (NEW API) destination config can
- // change in the middle of legacy batching causing issue with the existing flow
- describe("Router Tests (Legacy API)", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(
- inputLegacyRouterData
- );
- expect(routerOutput).toEqual(expectedLegacyRouterData);
- });
- });
-
- // New API
- describe("Router Tests (New API)", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-
- describe("Router Tests for rETL sources", () => {
- it("Payload", async () => {
- const routerOutputrETL = await transformer.processRouterDest(
- inputRouterDatarETL
- );
- expect(routerOutputrETL).toEqual(expectedRouterDatarETL);
- });
-
- it("should transform association events", async () => {
- const assocInput = JSON.parse(
- fs.readFileSync(
- path.resolve(
- __dirname,
- `data/${integration}_router_associations_rEtl_input.json`
- )
- )
- );
- const assocExpectedOutput = JSON.parse(
- fs.readFileSync(
- path.resolve(
- __dirname,
- `data/${integration}_router_associations_rEtl_output.json`
- )
- )
- );
- const actualOutput = await transformer.processRouterDest(assocInput);
-
- expect(actualOutput).toEqual(assocExpectedOutput);
- });
- });
- // rETL Sources
- describe("Router Tests for rETL sources (Legacy)", () => {
- it("Payload", async () => {
- const routerOutputrETLLegacy = await transformer.processRouterDest(
- inputRouterDatarETLLegacy
- );
- expect(routerOutputrETLLegacy).toEqual(expectedRouterDatarETLLegacy);
- });
- });
-});
diff --git a/test/__tests__/intercom.test.js b/test/__tests__/intercom.test.js
deleted file mode 100644
index 973b3e8a608..00000000000
--- a/test/__tests__/intercom.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const integration = "intercom";
-const name = "Intercom";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/klaviyo.test.js b/test/__tests__/klaviyo.test.js
deleted file mode 100644
index 209811b0072..00000000000
--- a/test/__tests__/klaviyo.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "klaviyo";
-const name = "Klaviyo";
-const version = "v0";
-
-const { FEATURE_FILTER_CODE } = require('../../src/v0/util/constant');
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const routerTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router.json`)
-);
-const routerTestData = JSON.parse(routerTestDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router", () => {
- routerTestData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- const oldTransformerOutput = await transformer.processRouterDest(dataPoint.input);
- const newTransformerOutput = await transformer.processRouterDest(dataPoint.input, { features: { [FEATURE_FILTER_CODE]: true } });
- expect(oldTransformerOutput).toEqual(dataPoint.oldTransformerOutput);
- expect(newTransformerOutput).toEqual(dataPoint.newTransformerOutput);
- });
- });
- });
-});
diff --git a/test/__tests__/kochava-cdk.test.ts b/test/__tests__/kochava-cdk.test.ts
deleted file mode 100644
index f87bca58287..00000000000
--- a/test/__tests__/kochava-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'kochava';
-const destName = 'Kochava';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/kochava.test.js b/test/__tests__/kochava.test.js
deleted file mode 100644
index 85ece5aa427..00000000000
--- a/test/__tests__/kochava.test.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
diff --git a/test/__tests__/kustomer.test.js b/test/__tests__/kustomer.test.js
deleted file mode 100644
index 89c5e844a92..00000000000
--- a/test/__tests__/kustomer.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const integration = "kustomer";
-const name = "Kustomer";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- inputData.forEach(async (input, index) => {
- it(`Payload - ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/lambda.test.js b/test/__tests__/lambda.test.js
deleted file mode 100644
index 9fd656b1031..00000000000
--- a/test/__tests__/lambda.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const integration = "lambda";
-const name = "lambda";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/launchdarkly_audience-cdk.test.ts b/test/__tests__/launchdarkly_audience-cdk.test.ts
deleted file mode 100644
index 419b59fbd18..00000000000
--- a/test/__tests__/launchdarkly_audience-cdk.test.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'launchdarkly_audience';
-const destName = 'LaunchDarkly Audience';
-
-// Processor Test files
-const testDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}.json`), {
- encoding: 'utf8',
-});
-const testData = JSON.parse(testDataFile);
-
-jest.mock(`../../src/cdk/v2/destinations/launchdarkly_audience/config`, () => {
- const originalConfig = jest.requireActual(
- `../../src/cdk/v2/destinations/launchdarkly_audience/config`,
- );
- return {
- ...originalConfig,
- MAX_IDENTIFIERS: 2,
- };
-});
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- testData.forEach((dataPoint, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- try {
- const output = await processCdkV2Workflow(
- integration,
- dataPoint.input,
- tags.FEATURES.PROCESSOR,
- );
- expect(output).toEqual(dataPoint.output);
- } catch (error: any) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/leanplum.test.js b/test/__tests__/leanplum.test.js
deleted file mode 100644
index eb55df54fea..00000000000
--- a/test/__tests__/leanplum.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const integration = "leanplum";
-const name = "LeanPlum";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/lemniskMarketingAutomation.test.js b/test/__tests__/lemniskMarketingAutomation.test.js
deleted file mode 100644
index 55c09ba63eb..00000000000
--- a/test/__tests__/lemniskMarketingAutomation.test.js
+++ /dev/null
@@ -1,44 +0,0 @@
-const integration = "lemnisk";
-const name = "lemniskMarketingAutomation";
-const version = "v0";
-
-const fs = require("fs");
-const path = require("path");
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const routerTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router.json`)
-);
-const routerTestData = JSON.parse(routerTestDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- routerTestData.forEach(dataPoint => {
- it("Payload", async () => {
- const output = await transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-});
diff --git a/test/__tests__/lytics-cdk.test.ts b/test/__tests__/lytics-cdk.test.ts
deleted file mode 100644
index f218fa27ea8..00000000000
--- a/test/__tests__/lytics-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'lytics';
-const destName = 'Lytics';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/lytics.test.js b/test/__tests__/lytics.test.js
deleted file mode 100644
index d2b226aea35..00000000000
--- a/test/__tests__/lytics.test.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
-executeTransformationTest(getDestFromTestFile(__filename), "router");
diff --git a/test/__tests__/mailchimp.test.js b/test/__tests__/mailchimp.test.js
deleted file mode 100644
index 5da9d572f7c..00000000000
--- a/test/__tests__/mailchimp.test.js
+++ /dev/null
@@ -1,67 +0,0 @@
-const integration = "mailchimp";
-const name = "Mailchimp";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-const batchInputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch_input.json`)
-);
-const batchOutputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch_output.json`)
-);
-
-const batchInputData = JSON.parse(batchInputDataFile);
-const batchExpectedData = JSON.parse(batchOutputDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-
- describe("Batching", () => {
- it("Payload", async () => {
- const output = await transformer.processRouterDest(batchInputData);
- expect(Array.isArray(output)).toEqual(true);
- expect(output).toEqual(batchExpectedData);
- });
- });
-});
diff --git a/test/__tests__/mailjet.test.js b/test/__tests__/mailjet.test.js
deleted file mode 100644
index a732b9ca82e..00000000000
--- a/test/__tests__/mailjet.test.js
+++ /dev/null
@@ -1,57 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "mailjet";
-const name = "mailjet";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const routerTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router.json`)
-);
-const routerTestData = JSON.parse(routerTestDataFile);
-
-const batchDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch.json`)
-);
-const batchData = JSON.parse(batchDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- try {
- const output = transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- routerTestData.forEach(dataPoint => {
- it("Payload", () => {
- const output = transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-
- describe("Batching", () => {
- batchData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- const output = transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-});
diff --git a/test/__tests__/mailjet_source.test.js b/test/__tests__/mailjet_source.test.js
index 9081d211225..7a778e7b4eb 100644
--- a/test/__tests__/mailjet_source.test.js
+++ b/test/__tests__/mailjet_source.test.js
@@ -18,7 +18,7 @@ testData.forEach((data, index) => {
it(`${name} Tests: payload: ${index}`, () => {
try {
const output = transformer.process(data.input);
- expect(output).toEqual(data.output.Message);
+ expect(output).toEqual(data.output);
} catch (error) {
expect(error.message).toEqual(data.output);
}
diff --git a/test/__tests__/mailmodo.test.js b/test/__tests__/mailmodo.test.js
deleted file mode 100644
index d49049f5db8..00000000000
--- a/test/__tests__/mailmodo.test.js
+++ /dev/null
@@ -1,52 +0,0 @@
-const integration = "mailmodo";
-const name = "Mailmodo";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- try {
- const output = transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
- describe("Router", () => {
- it("Payload", async () => {
- try {
- const routerOutput = await transformer.processRouterDest(
- inputRouterData
- );
- expect(routerOutput).toEqual(expectedRouterData);
- } catch (error) {
- expect(error.message).toEqual(expectedRouterData.error);
- }
- });
- });
-});
diff --git a/test/__tests__/marketo.test.js b/test/__tests__/marketo.test.js
deleted file mode 100644
index b300b20f104..00000000000
--- a/test/__tests__/marketo.test.js
+++ /dev/null
@@ -1,71 +0,0 @@
-jest.mock("axios");
-
-const integration = "marketo";
-const name = "Marketo";
-const version = "v0";
-
-const fs = require("fs");
-const path = require("path");
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-// Router Metadata Test files
-const inputRouterMetadataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_metadata_input.json`)
-);
-const outputRouterMetadataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_metadata_output.json`)
-);
-const inputRouterMetadata = JSON.parse(inputRouterMetadataFile);
-const expectedRouterMetadata = JSON.parse(outputRouterMetadataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- inputData.forEach(async (input, index) => {
- it(`Payload - ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-
- describe("Router Metadata Tests", () => {
- it("Payload", async () => {
- const routerMetadataOutput = await transformer.processMetadataForRouter(
- inputRouterMetadata
- );
- expect(routerMetadataOutput).toEqual(expectedRouterMetadata);
- });
- });
-});
diff --git a/test/__tests__/marketo_bulk_upload.test.js b/test/__tests__/marketo_bulk_upload.test.js
index be4efa14e20..6cf4d559b9d 100644
--- a/test/__tests__/marketo_bulk_upload.test.js
+++ b/test/__tests__/marketo_bulk_upload.test.js
@@ -93,9 +93,6 @@ describe(`${integration} Tests`, () => {
const output = await vRouter.pollStatus(input);
expect(output).toEqual(respPollBody[index]);
} catch (error) {
- console.log("CHEEECKKKK");
- console.log(error);
- console.log(respPollBody[index].error);
expect(error.message).toEqual(respPollBody[index].error);
}
});
diff --git a/test/__tests__/moengage.test.js b/test/__tests__/moengage.test.js
deleted file mode 100644
index 6f9ad38afc4..00000000000
--- a/test/__tests__/moengage.test.js
+++ /dev/null
@@ -1,48 +0,0 @@
-const integration = "moengage";
-const name = "Moengage";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/monday.test.js b/test/__tests__/monday.test.js
deleted file mode 100644
index 0344cfcf757..00000000000
--- a/test/__tests__/monday.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "monday";
-const name = "Monday";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/monetate.test.js b/test/__tests__/monetate.test.js
deleted file mode 100644
index 2b5c39db64a..00000000000
--- a/test/__tests__/monetate.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-const integration = "monetate";
-const name = "Monetate";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/new_relic-cdk.test.ts b/test/__tests__/new_relic-cdk.test.ts
deleted file mode 100644
index 79b38ecf702..00000000000
--- a/test/__tests__/new_relic-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'new_relic';
-const destName = 'New Relic';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/new_relic.test.js b/test/__tests__/new_relic.test.js
deleted file mode 100644
index 85ece5aa427..00000000000
--- a/test/__tests__/new_relic.test.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
diff --git a/test/__tests__/ometria.test.js b/test/__tests__/ometria.test.js
deleted file mode 100644
index 6d397c5ee4d..00000000000
--- a/test/__tests__/ometria.test.js
+++ /dev/null
@@ -1,52 +0,0 @@
-const path = require("path");
-const fs = require("fs");
-
-const integration = "ometria";
-const name = "Ometria";
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-inputData.forEach((input, index) => {
- it(`${name} Tests: payload - ${index}`, () => {
- let output, expected;
- try {
- output = transformer.process(input);
- expected = expectedData[index];
- } catch (error) {
- output = error.message;
- expected = expectedData[index].message;
- }
- //console.log(output.body);
- expect(output).toEqual(expected);
- });
-});
-
-const batchInputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch_input.json`)
-);
-const batchOutputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch_output.json`)
-);
-
-const batchInputData = JSON.parse(batchInputDataFile);
-const batchExpectedData = JSON.parse(batchOutputDataFile);
-
-test("Batching", async () => {
- const batchInputData = JSON.parse(batchInputDataFile);
- const batchExpectedData = JSON.parse(batchOutputDataFile);
- const output = await transformer.processRouterDest(batchInputData);
- // console.log(JSON.stringify(batchInputData));
- // console.log(JSON.stringify(output));
- expect(Array.isArray(output)).toEqual(true);
- expect(output).toEqual(batchExpectedData);
-});
diff --git a/test/__tests__/one_signal.test.js b/test/__tests__/one_signal.test.js
deleted file mode 100644
index 393d3c76579..00000000000
--- a/test/__tests__/one_signal.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "one_signal";
-const name = "OneSignal";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/pagerduty.test.js b/test/__tests__/pagerduty.test.js
deleted file mode 100644
index b5bd4cf4b3f..00000000000
--- a/test/__tests__/pagerduty.test.js
+++ /dev/null
@@ -1,43 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "pagerduty";
-const name = "PagerDuty";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const routerTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router.json`)
-);
-const routerTestData = JSON.parse(routerTestDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- try {
- const output = transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- routerTestData.forEach(dataPoint => {
- it("Payload", async () => {
- const output = await transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-});
diff --git a/test/__tests__/personalize.test.js b/test/__tests__/personalize.test.js
deleted file mode 100644
index b46dc7df4e5..00000000000
--- a/test/__tests__/personalize.test.js
+++ /dev/null
@@ -1,28 +0,0 @@
-const integration = "personalize";
-const name = "Personalize";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
-});
diff --git a/test/__tests__/pinterestConversion.test.js b/test/__tests__/pinterestConversion.test.js
index 351551753d1..4c145f0383b 100644
--- a/test/__tests__/pinterestConversion.test.js
+++ b/test/__tests__/pinterestConversion.test.js
@@ -7,6 +7,8 @@ const path = require("path");
const version = "v0";
const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
+const { assertRouterOutput } = require('../testHelper');
+
const inputDataFile = fs.readFileSync(
path.resolve(__dirname, `./data/${integration}_input.json`)
);
@@ -44,6 +46,7 @@ describe(`${name} Tests`, () => {
inputRouterData.forEach((input, index) => {
it(`Payload: ${index}`, async () => {
let output = await transformer.processRouterDest(input);
+ assertRouterOutput(output, input);
expect(output).toEqual(expectedRouterData[index]);
});
});
diff --git a/test/__tests__/profitwell.test.js b/test/__tests__/profitwell.test.js
deleted file mode 100644
index 99ed1a4c434..00000000000
--- a/test/__tests__/profitwell.test.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-const { mockaxios } = require("../__mocks__/network");
-
-const integration = "profitwell";
-const name = "profitwell";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-jest.mock("../../src/adapters/network", () => {
- const originalModule = jest.requireActual("../../src/adapters/network");
-
- //Mock the default export and named export 'send'
- return {
- __esModule: true,
- ...originalModule,
- send: jest.fn(mockaxios)
- };
-});
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/rockerbox.test.js b/test/__tests__/rockerbox.test.js
deleted file mode 100644
index 092b4b2806a..00000000000
--- a/test/__tests__/rockerbox.test.js
+++ /dev/null
@@ -1,45 +0,0 @@
-const integration = "rockerbox";
-const name = "rockerbox";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test Data
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, () => {
- try {
- const output = transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/sendgrid.test.js b/test/__tests__/sendgrid.test.js
deleted file mode 100644
index 20b0ebc5ae5..00000000000
--- a/test/__tests__/sendgrid.test.js
+++ /dev/null
@@ -1,58 +0,0 @@
-const fs = require("fs");
-const path = require("path");
-
-const integration = "sendgrid";
-const name = "SendGrid";
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const routerTestDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router.json`)
-);
-const routerTestData = JSON.parse(routerTestDataFile);
-
-// Batch test files
-const batchDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_batch.json`)
-);
-const batchData = JSON.parse(batchDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- routerTestData.forEach(dataPoint => {
- it("SendGrid router test case", async () => {
- const output = await transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-
- describe("Batching", () => {
- batchData.forEach((dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- const output = await transformer.processRouterDest(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- });
- });
- });
-});
diff --git a/test/__tests__/sendinblue.test.js b/test/__tests__/sendinblue.test.js
deleted file mode 100644
index 063f5bf2821..00000000000
--- a/test/__tests__/sendinblue.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const integration = "sendinblue";
-const name = "Sendinblue";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach(async (dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/sfmc.test.js b/test/__tests__/sfmc.test.js
deleted file mode 100644
index 69d67625b1e..00000000000
--- a/test/__tests__/sfmc.test.js
+++ /dev/null
@@ -1,49 +0,0 @@
-jest.mock("axios");
-const integration = "sfmc";
-const name = "Salesforce Marketing Cloud";
-const version = "v0";
-
-const fs = require("fs");
-const path = require("path");
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-const inputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_input.json`)
-);
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`)
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-// Router Test Data
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor Tests", () => {
- inputData.forEach((input, index) => {
- it(`${name} - payload: ${index}`, async () => {
- try {
- const output = await transformer.process(input);
- expect(output).toEqual(expectedData[index]);
- } catch (error) {
- expect(error.message).toEqual(expectedData[index].error);
- }
- });
- });
- });
-
- describe("Router Tests", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/stormly.test.js b/test/__tests__/stormly.test.js
deleted file mode 100644
index 2640440b3f3..00000000000
--- a/test/__tests__/stormly.test.js
+++ /dev/null
@@ -1,47 +0,0 @@
-const integration = "stormly";
-const name = "STORMLY";
-
-const fs = require("fs");
-const path = require("path");
-
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach(async (dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/user_transformation_errors.test.js b/test/__tests__/user_transformation_errors.test.js
index 62bf4db3ce0..c2a99ce09d1 100644
--- a/test/__tests__/user_transformation_errors.test.js
+++ b/test/__tests__/user_transformation_errors.test.js
@@ -163,7 +163,6 @@ describe("JS Transformation Error Tests", () => {
true,
);
- console.log('XTE: ', result.transformedEvents)
expect(result.transformedEvents.length).toBe(1);
result.transformedEvents.forEach(ev => { expect(ev.error).toEqual(
`ReferenceError: x is not defined
diff --git a/test/__tests__/userlist-cdk.test.ts b/test/__tests__/userlist-cdk.test.ts
deleted file mode 100644
index 6c8dcc257fd..00000000000
--- a/test/__tests__/userlist-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'userlist';
-const destName = 'Userlist';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/userlist.test.js b/test/__tests__/userlist.test.js
deleted file mode 100644
index d2b226aea35..00000000000
--- a/test/__tests__/userlist.test.js
+++ /dev/null
@@ -1,7 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
-executeTransformationTest(getDestFromTestFile(__filename), "router");
diff --git a/test/__tests__/utilities/test-utils.js b/test/__tests__/utilities/test-utils.js
index 73353f1dede..4d5d7fc9092 100644
--- a/test/__tests__/utilities/test-utils.js
+++ b/test/__tests__/utilities/test-utils.js
@@ -2,6 +2,7 @@ const fs = require("fs");
const _ = require("lodash");
const path = require("path");
const { ConfigFactory, Executor } = require("rudder-transformer-cdk");
+const { assertRouterOutput } = require('../../testHelper');
// TODO: separate this out later as the list grows
const cdkEnabledDestinations = {
@@ -95,7 +96,9 @@ function executeTransformationTest(dest, transformAt) {
if (transformAt == "processor") {
actualData = await transformer.process(tcInput);
} else {
- actualData = (await transformer.processRouterDest([tcInput]))[0];
+ actual = await transformer.processRouterDest([tcInput])
+ assertRouterOutput(actual, [tcInput]);
+ actualData = (actual)[0];
}
}
// Compare actual and expected data
@@ -115,6 +118,7 @@ function executeTransformationTest(dest, transformAt) {
const version = "v0";
const transformer = require(`../../../src/${version}/destinations/${dest}/transform`);
actualData = await transformer.processRouterDest(commonInput);
+ assertRouterOutput(actualData, commonInput);
const cloneActual = _.cloneDeep(actualData);
cloneActual[0].statTags = "undefined";
// Compare actual and expected data
diff --git a/test/__tests__/vitally-cdk.test.ts b/test/__tests__/vitally-cdk.test.ts
deleted file mode 100644
index 851461b4abd..00000000000
--- a/test/__tests__/vitally-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'vitally';
-const destName = 'Vitally';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/vitally.test.js b/test/__tests__/vitally.test.js
deleted file mode 100644
index 88ccc9a964b..00000000000
--- a/test/__tests__/vitally.test.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const {
- getDestFromTestFile,
- executeTransformationTest
-} = require("./utilities/test-utils");
-
-executeTransformationTest(getDestFromTestFile(__filename), "processor");
\ No newline at end of file
diff --git a/test/__tests__/warehouse.test.js b/test/__tests__/warehouse.test.js
index 045bab35a6b..772e59e65a9 100644
--- a/test/__tests__/warehouse.test.js
+++ b/test/__tests__/warehouse.test.js
@@ -20,6 +20,7 @@ const {
const {
validTimestamp
} = require("../../src/warehouse/util.js");
+const {isBlank} = require("../../src/warehouse/config/helpers.js");
const version = "v0";
const integrations = [
@@ -1096,54 +1097,117 @@ describe("Integration options", () => {
describe("validTimestamp", () => {
const testCases = [
{
+ name: "undefined input should return false",
input: undefined,
expected: false,
},
{
+ name: "negative year and time input should return false #1",
input: '-0001-11-30T00:00:00+0000',
expected: false,
},
{
+ name: "negative year and time input should return false #2",
input: '-2023-06-14T05:23:59.244Z',
expected: false,
},
{
+ name: "negative year and time input should return false #3",
+ input: '-1900-06-14T05:23:59.244Z',
+ expected: false,
+ },
+ {
+ name: "positive year and time input should return false",
input: '+2023-06-14T05:23:59.244Z',
expected: false,
},
{
+ name: "valid timestamp input should return true",
input: '2023-06-14T05:23:59.244Z',
expected: true,
},
{
- input: '-1900-06-14T05:23:59.244Z',
- expected: false,
- },
- {
+ name: "non-date string input should return false",
input: 'abc',
expected: false,
},
{
- input: '%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216Windows%u2216win%u002ein',
+ name: "malicious string input should return false",
+ input: '%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216Windows%u2216win%u002ein',
expected: false,
},
{
+ name: "empty string input should return false",
input: '',
expected: false,
},
{
+ name: "valid date input should return true",
input: '2023-06-14',
expected: true,
},
{
+ name: "time-only input should return false",
input: '05:23:59.244Z',
expected: false,
- }
- ]
+ },
+ {
+ name: "non-string input should return false",
+ input: { abc: 123 },
+ expected: false,
+ },
+ {
+ name: "object with toString method input should return false",
+ input: {
+ toString: '2023-06-14T05:23:59.244Z'
+ },
+ expected: false,
+ },
+ ];
for (const testCase of testCases) {
- it(`should return ${testCase.expected} for ${testCase.input}`, () => {
+ it(`should return ${testCase.expected} for ${testCase.name}`, () => {
expect(validTimestamp(testCase.input)).toEqual(testCase.expected);
});
}
});
+
+
+
+describe("isBlank", () => {
+ const testCases = [
+ {
+ name: "null",
+ input: null,
+ expected: true
+ },
+ {
+ name: "empty string",
+ input: "",
+ expected: true
+ },
+ {
+ name: "non-empty string",
+ input: "test",
+ expected: false
+ },
+ {
+ name: "numeric value",
+ input: 1634762544,
+ expected: false
+ },
+ {
+ name: "object with toString property",
+ input: {
+ toString: '2023-06-14T05:23:59.244Z'
+ },
+ expected: false
+ },
+ ];
+
+ for (const testCase of testCases) {
+ it(`should return ${testCase.expected} for ${testCase.name}`, () => {
+ expect(isBlank(testCase.input)).toEqual(testCase.expected);
+ });
+ }
+});
\ No newline at end of file
diff --git a/test/__tests__/webhook-cdk.test.ts b/test/__tests__/webhook-cdk.test.ts
deleted file mode 100644
index aa519f72cf1..00000000000
--- a/test/__tests__/webhook-cdk.test.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'webhook';
-const destName = 'Webhook';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.message);
- }
- });
- });
- });
-
- const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`),
- { encoding: 'utf8' },
- );
- const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`),
- { encoding: 'utf8' },
- );
- const inputRouterData = JSON.parse(inputRouterDataFile);
- const expectedRouterData = JSON.parse(outputRouterDataFile);
-
- describe('Router Tests', () => {
- inputRouterData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedRouterData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.ROUTER);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.message);
- }
- });
- });
- });
-});
diff --git a/test/__tests__/wootric.test.js b/test/__tests__/wootric.test.js
deleted file mode 100644
index 7e7e81cd49a..00000000000
--- a/test/__tests__/wootric.test.js
+++ /dev/null
@@ -1,46 +0,0 @@
-const integration = "wootric";
-const name = "Wootric";
-
-const fs = require("fs");
-const path = require("path");
-const version = "v0";
-
-const transformer = require(`../../src/${version}/destinations/${integration}/transform`);
-
-// Processor Test files
-const testDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}.json`)
-);
-const testData = JSON.parse(testDataFile);
-
-// Router Test files
-const inputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_input.json`)
-);
-const outputRouterDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_router_output.json`)
-);
-const inputRouterData = JSON.parse(inputRouterDataFile);
-const expectedRouterData = JSON.parse(outputRouterDataFile);
-
-describe(`${name} Tests`, () => {
- describe("Processor", () => {
- testData.forEach(async (dataPoint, index) => {
- it(`${index}. ${integration} - ${dataPoint.description}`, async () => {
- try {
- const output = await transformer.process(dataPoint.input);
- expect(output).toEqual(dataPoint.output);
- } catch (error) {
- expect(error.message).toEqual(dataPoint.output.error);
- }
- });
- });
- });
-
- describe("Router", () => {
- it("Payload", async () => {
- const routerOutput = await transformer.processRouterDest(inputRouterData);
- expect(routerOutput).toEqual(expectedRouterData);
- });
- });
-});
diff --git a/test/__tests__/zapier-cdk.test.ts b/test/__tests__/zapier-cdk.test.ts
deleted file mode 100644
index 33e71bd1f8b..00000000000
--- a/test/__tests__/zapier-cdk.test.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import fs from 'fs';
-import path from 'path';
-import { processCdkV2Workflow } from '../../src/cdk/v2/handler';
-import tags from '../../src/v0/util/tags';
-
-const integration = 'zapier';
-const destName = 'Zapier';
-
-const inputDataFile = fs.readFileSync(path.resolve(__dirname, `./data/${integration}_input.json`), {
- encoding: 'utf8',
-});
-const outputDataFile = fs.readFileSync(
- path.resolve(__dirname, `./data/${integration}_cdk_output.json`),
- { encoding: 'utf8' },
-);
-const inputData = JSON.parse(inputDataFile);
-const expectedData = JSON.parse(outputDataFile);
-
-describe(`${destName} Tests`, () => {
- describe('Processor Tests', () => {
- inputData.forEach((input, index) => {
- it(`${destName} - payload: ${index}`, async () => {
- const expected = expectedData[index];
- try {
- const output = await processCdkV2Workflow(integration, input, tags.FEATURES.PROCESSOR);
- expect(output).toEqual(expected);
- } catch (error: any) {
- expect(error.message).toEqual(expected.error);
- }
- });
- });
- });
-});
diff --git a/test/apitests/data_scenarios/destination/batch/failure_batch.json b/test/apitests/data_scenarios/destination/batch/failure_batch.json
index 8063bc74a12..6352ca1a11f 100644
--- a/test/apitests/data_scenarios/destination/batch/failure_batch.json
+++ b/test/apitests/data_scenarios/destination/batch/failure_batch.json
@@ -1051,125 +1051,314 @@
},
"output": [
{
- "metadata": {
- "userId": "<<>>testUser<<>>testUser",
- "jobId": 2,
- "sourceId": "27O0bmEEx3GgfmEhZHUcPwJQVWC",
- "destinationId": "2JK3ACpBjq9AmvUbxR1u2pDPSYR",
- "attemptNum": 0,
- "receivedAt": "2022-12-24T17:29:00.699+05:30",
- "createdAt": "2022-12-24T11:59:03.125Z",
- "firstAttemptedAt": "",
- "transformAt": "processor",
- "workspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg",
- "secret": null,
- "jobsT": {
- "UUID": "aaa8b7c4-2600-478b-b275-01740e1ef50c",
- "JobID": 2,
- "UserID": "<<>>testUser<<>>testUser",
- "CreatedAt": "2022-12-24T11:59:03.125515Z",
- "ExpireAt": "2022-12-24T11:59:03.125515Z",
- "CustomVal": "AM",
- "EventCount": 1,
- "EventPayload": {
- "body": {
- "XML": {},
- "FORM": {},
- "JSON": {
- "events": [
- {
- "ip": "[::1]",
- "time": 1671883143047,
- "library": "rudderstack",
- "user_id": "testUser",
- "device_id": "anon-id",
- "insert_id": "14642496-9a12-4db7-b0f2-9a336cf6cea9",
- "event_type": "Product Added",
- "session_id": -1,
- "user_properties": {
- "email": "test.c97@gmail.com",
- "phone": "+919876543210",
- "gender": "Male",
- "lastName": "Rudderlabs",
- "firstName": "test"
- },
- "event_properties": {
- "sku": "F15",
- "url": "https://www.website.com/product/path",
- "name": "Game",
- "brand": "Gamepro",
- "price": 13.49,
- "coupon": "DISC21",
- "variant": "111",
- "category": "Games",
- "position": 1,
- "quantity": 11,
- "image_url": "https://www.website.com/product/path.png",
- "product_id": "123"
+ "metadata": [
+ {
+ "userId": "<<>>testUser<<>>testUser",
+ "jobId": 2,
+ "sourceId": "27O0bmEEx3GgfmEhZHUcPwJQVWC",
+ "destinationId": "2JK3ACpBjq9AmvUbxR1u2pDPSYR",
+ "attemptNum": 0,
+ "receivedAt": "2022-12-24T17:29:00.699+05:30",
+ "createdAt": "2022-12-24T11:59:03.125Z",
+ "firstAttemptedAt": "",
+ "transformAt": "processor",
+ "workspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg",
+ "secret": null,
+ "jobsT": {
+ "UUID": "aaa8b7c4-2600-478b-b275-01740e1ef50c",
+ "JobID": 2,
+ "UserID": "<<>>testUser<<>>testUser",
+ "CreatedAt": "2022-12-24T11:59:03.125515Z",
+ "ExpireAt": "2022-12-24T11:59:03.125515Z",
+ "CustomVal": "AM",
+ "EventCount": 1,
+ "EventPayload": {
+ "body": {
+ "XML": {},
+ "FORM": {},
+ "JSON": {
+ "events": [
+ {
+ "ip": "[::1]",
+ "time": 1671883143047,
+ "library": "rudderstack",
+ "user_id": "testUser",
+ "device_id": "anon-id",
+ "insert_id": "14642496-9a12-4db7-b0f2-9a336cf6cea9",
+ "event_type": "Product Added",
+ "session_id": -1,
+ "user_properties": {
+ "email": "test.c97@gmail.com",
+ "phone": "+919876543210",
+ "gender": "Male",
+ "lastName": "Rudderlabs",
+ "firstName": "test"
+ },
+ "event_properties": {
+ "sku": "F15",
+ "url": "https://www.website.com/product/path",
+ "name": "Game",
+ "brand": "Gamepro",
+ "price": 13.49,
+ "coupon": "DISC21",
+ "variant": "111",
+ "category": "Games",
+ "position": 1,
+ "quantity": 11,
+ "image_url": "https://www.website.com/product/path.png",
+ "product_id": "123"
+ }
}
+ ],
+ "api_key": "dummyApiKey",
+ "options": {
+ "min_id_length": 1
}
- ],
- "api_key": "dummyApiKey",
- "options": {
- "min_id_length": 1
- }
+ },
+ "JSON_ARRAY": {}
},
- "JSON_ARRAY": {}
+ "type": "REST",
+ "files": {},
+ "method": "POST",
+ "params": {},
+ "userId": "anon-id",
+ "headers": {
+ "Content-Type": "application/json"
+ },
+ "version": "1",
+ "endpoint": "https://api2.amplitude.com/2/httpapi"
},
- "type": "REST",
- "files": {},
- "method": "POST",
- "params": {},
- "userId": "anon-id",
- "headers": {
- "Content-Type": "application/json"
+ "PayloadSize": 1133,
+ "LastJobStatus": {
+ "JobID": 0,
+ "JobState": "",
+ "AttemptNum": 0,
+ "ExecTime": "0001-01-01T00:00:00Z",
+ "RetryTime": "0001-01-01T00:00:00Z",
+ "ErrorCode": "",
+ "ErrorResponse": null,
+ "Parameters": null,
+ "WorkspaceId": ""
},
- "version": "1",
- "endpoint": "https://api2.amplitude.com/2/httpapi"
- },
- "PayloadSize": 1133,
- "LastJobStatus": {
- "JobID": 0,
- "JobState": "",
- "AttemptNum": 0,
- "ExecTime": "0001-01-01T00:00:00Z",
- "RetryTime": "0001-01-01T00:00:00Z",
- "ErrorCode": "",
- "ErrorResponse": null,
- "Parameters": null,
- "WorkspaceId": ""
- },
- "Parameters": {
- "record_id": null,
- "source_id": "27O0bmEEx3GgfmEhZHUcPwJQVWC",
- "event_name": "Product Added",
- "event_type": "track",
- "message_id": "14642496-9a12-4db7-b0f2-9a336cf6cea9",
- "received_at": "2022-12-24T17:29:00.699+05:30",
- "workspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg",
- "transform_at": "processor",
- "source_job_id": "",
- "destination_id": "2JK3ACpBjq9AmvUbxR1u2pDPSYR",
- "gateway_job_id": 1,
- "source_task_id": "",
- "source_batch_id": "",
- "source_category": "",
- "source_job_run_id": "",
- "source_task_run_id": "",
- "source_definition_id": "1b6gJdqOPOCadT3cddw8eidV591",
- "destination_definition_id": ""
+ "Parameters": {
+ "record_id": null,
+ "source_id": "27O0bmEEx3GgfmEhZHUcPwJQVWC",
+ "event_name": "Product Added",
+ "event_type": "track",
+ "message_id": "14642496-9a12-4db7-b0f2-9a336cf6cea9",
+ "received_at": "2022-12-24T17:29:00.699+05:30",
+ "workspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg",
+ "transform_at": "processor",
+ "source_job_id": "",
+ "destination_id": "2JK3ACpBjq9AmvUbxR1u2pDPSYR",
+ "gateway_job_id": 1,
+ "source_task_id": "",
+ "source_batch_id": "",
+ "source_category": "",
+ "source_job_run_id": "",
+ "source_task_run_id": "",
+ "source_definition_id": "1b6gJdqOPOCadT3cddw8eidV591",
+ "destination_definition_id": ""
+ },
+ "WorkspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg"
},
- "WorkspaceId": "27O0bhB6p5ehfOWeeZlOSsSDTLg"
- },
- "workerAssignedTime": "2022-12-24T17:29:04.051596+05:30"
- },
+ "workerAssignedTime": "2022-12-24T17:29:04.051596+05:30"
+ }
+ ],
"batched": false,
"statusCode": 400,
"statTags": {
"errorCategory": "dataValidation",
"errorType": "instrumentation"
},
- "error": "Both userId and deviceId cannot be undefined"
+ "error": "Both userId and deviceId cannot be undefined",
+ "destination": {
+ "ID": "2JK3ACpBjq9AmvUbxR1u2pDPSYR",
+ "Name": "Amplitude-2",
+ "DestinationDefinition": {
+ "ID": "1QGzO4fWSyq3lsyFHf4eQAMDSr9",
+ "Name": "AM",
+ "DisplayName": "Amplitude",
+ "Config": {
+ "destConfig": {
+ "android": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "enableLocationListening",
+ "trackSessionEvents",
+ "useAdvertisingIdForDeviceId"
+ ],
+ "defaultConfig": [
+ "apiKey",
+ "groupTypeTrait",
+ "groupValueTrait",
+ "trackAllPages",
+ "trackCategorizedPages",
+ "trackNamedPages",
+ "traitsToIncrement",
+ "traitsToSetOnce",
+ "traitsToAppend",
+ "traitsToPrepend",
+ "trackProductsOnce",
+ "trackRevenuePerProduct",
+ "versionName",
+ "apiSecret",
+ "residencyServer",
+ "blacklistedEvents",
+ "whitelistedEvents",
+ "eventFilteringOption",
+ "mapDeviceBrand"
+ ],
+ "flutter": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "enableLocationListening",
+ "trackSessionEvents",
+ "useAdvertisingIdForDeviceId",
+ "useIdfaAsDeviceId"
+ ],
+ "ios": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "trackSessionEvents",
+ "useIdfaAsDeviceId"
+ ],
+ "reactnative": [
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "useNativeSDK",
+ "enableLocationListening",
+ "trackSessionEvents",
+ "useAdvertisingIdForDeviceId",
+ "useIdfaAsDeviceId"
+ ],
+ "web": [
+ "useNativeSDK",
+ "preferAnonymousIdForDeviceId",
+ "deviceIdFromUrlParam",
+ "forceHttps",
+ "trackGclid",
+ "trackReferrer",
+ "saveParamsReferrerOncePerSession",
+ "trackUtmProperties",
+ "unsetParamsReferrerOnNewSession",
+ "batchEvents",
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "oneTrustCookieCategories"
+ ]
+ },
+ "excludeKeys": [],
+ "includeKeys": [
+ "apiKey",
+ "groupTypeTrait",
+ "groupValueTrait",
+ "trackAllPages",
+ "trackCategorizedPages",
+ "trackNamedPages",
+ "traitsToIncrement",
+ "traitsToSetOnce",
+ "traitsToAppend",
+ "traitsToPrepend",
+ "trackProductsOnce",
+ "trackRevenuePerProduct",
+ "preferAnonymousIdForDeviceId",
+ "deviceIdFromUrlParam",
+ "forceHttps",
+ "trackGclid",
+ "trackReferrer",
+ "saveParamsReferrerOncePerSession",
+ "trackUtmProperties",
+ "unsetParamsReferrerOnNewSession",
+ "batchEvents",
+ "eventUploadPeriodMillis",
+ "eventUploadThreshold",
+ "versionName",
+ "enableLocationListening",
+ "useAdvertisingIdForDeviceId",
+ "trackSessionEvents",
+ "useIdfaAsDeviceId",
+ "blacklistedEvents",
+ "whitelistedEvents",
+ "oneTrustCookieCategories",
+ "eventFilteringOption",
+ "mapDeviceBrand"
+ ],
+ "saveDestinationResponse": true,
+ "secretKeys": ["apiKey", "apiSecret"],
+ "supportedMessageTypes": ["alias", "group", "identify", "page", "screen", "track"],
+ "supportedSourceTypes": [
+ "android",
+ "ios",
+ "web",
+ "unity",
+ "amp",
+ "cloud",
+ "warehouse",
+ "reactnative",
+ "flutter",
+ "cordova"
+ ],
+ "supportsVisualMapper": true,
+ "transformAt": "processor",
+ "transformAtV1": "processor"
+ },
+ "ResponseRules": null
+ },
+ "Config": {
+ "apiKey": "dummyApiKey",
+ "apiSecret": "",
+ "blacklistedEvents": [
+ {
+ "eventName": ""
+ }
+ ],
+ "eventFilteringOption": "disable",
+ "groupTypeTrait": "",
+ "groupValueTrait": "",
+ "mapDeviceBrand": false,
+ "residencyServer": "standard",
+ "trackAllPages": false,
+ "trackCategorizedPages": true,
+ "trackNamedPages": true,
+ "trackProductsOnce": false,
+ "trackRevenuePerProduct": false,
+ "traitsToAppend": [
+ {
+ "traits": ""
+ }
+ ],
+ "traitsToIncrement": [
+ {
+ "traits": ""
+ }
+ ],
+ "traitsToPrepend": [
+ {
+ "traits": ""
+ }
+ ],
+ "traitsToSetOnce": [
+ {
+ "traits": ""
+ }
+ ],
+ "versionName": "",
+ "whitelistedEvents": [
+ {
+ "eventName": ""
+ }
+ ]
+ },
+ "Enabled": true,
+ "WorkspaceID": "27O0bhB6p5ehfOWeeZlOSsSDTLg",
+ "Transformations": [],
+ "IsProcessorEnabled": true,
+ "RevisionID": "2JMKUgZX3b8sbtDSZrkUB7okeOY"
+ }
},
{
"batchedRequest": {
diff --git a/test/apitests/service.api.test.ts b/test/apitests/service.api.test.ts
index ee534d7b371..266619b6ac2 100644
--- a/test/apitests/service.api.test.ts
+++ b/test/apitests/service.api.test.ts
@@ -6,6 +6,8 @@ import Koa from 'koa';
import bodyParser from 'koa-bodyparser';
import setValue from 'set-value';
import { applicationRoutes } from '../../src/routes';
+import { FetchHandler } from '../../src/helpers/fetchHandlers';
+import networkHandlerFactory from '../../src/adapters/networkHandlerFactory';
let server: any;
const OLD_ENV = process.env;
@@ -30,12 +32,16 @@ afterAll(async () => {
await httpTerminator.terminate();
});
+afterEach(() => {
+ jest.clearAllMocks();
+});
+
const getDataFromPath = (pathInput) => {
const testDataFile = fs.readFileSync(path.resolve(__dirname, pathInput));
return JSON.parse(testDataFile.toString());
};
-describe('Basic route tests', () => {
+describe('features tests', () => {
test('successful features response', async () => {
const expectedData = JSON.parse(
fs.readFileSync(path.resolve(__dirname, '../../src/features.json'), 'utf8'),
@@ -44,6 +50,362 @@ describe('Basic route tests', () => {
expect(response.status).toEqual(200);
expect(JSON.parse(response.text)).toEqual(expectedData);
});
+
+ test('features regulations should be array', async () => {
+ const response = await request(server).get('/features');
+ expect(response.status).toEqual(200);
+ const regulations = JSON.parse(response.text).regulations;
+ expect(Array.isArray(regulations)).toBeTruthy();
+ });
+
+ test('features routerTransform should be object', async () => {
+ const response = await request(server).get('/features');
+ expect(response.status).toEqual(200);
+ const routerTransform = JSON.parse(response.text).routerTransform;
+ expect(Array.isArray(routerTransform)).toBeFalsy();
+ expect(typeof routerTransform).toBe('object');
+ expect(Object.keys(routerTransform).length).toBeGreaterThan(0);
+ });
+
+ test('features supportSourceTransformV1 to be boolean', async () => {
+ const response = await request(server).get('/features');
+ expect(response.status).toEqual(200);
+ const supportSourceTransformV1 = JSON.parse(response.text).supportSourceTransformV1;
+ expect(typeof supportSourceTransformV1).toBe('boolean');
+ });
+
+ test('features supportTransformerProxyV1 to be boolean', async () => {
+ const response = await request(server).get('/features');
+ expect(response.status).toEqual(200);
+ const supportTransformerProxyV1 = JSON.parse(response.text).supportTransformerProxyV1;
+ expect(typeof supportTransformerProxyV1).toBe('boolean');
+ });
+});
+
+describe('Api tests with a mock source/destination', () => {
+ test('(mock destination) Processor transformation scenario with single event', async () => {
+ const destType = '__rudder_test__';
+ const version = 'v0';
+
+ const getInputData = () => {
+ return [
+ { message: { a: 'b1' }, destination: {}, metadata: { jobId: 1 } },
+ { message: { a: 'b2' }, destination: {}, metadata: { jobId: 2 } },
+ ];
+ };
+ const tevent = { version: 'v0', endpoint: 'http://abc' };
+
+ const getDestHandlerSpy = jest
+ .spyOn(FetchHandler, 'getDestHandler')
+ .mockImplementationOnce((d, v) => {
+ expect(d).toEqual(destType);
+ expect(v).toEqual(version);
+ return {
+ process: jest.fn(() => {
+ return tevent;
+ }),
+ };
+ });
+
+ const expected = [
+ {
+ output: { version: 'v0', endpoint: 'http://abc', userId: '' },
+ metadata: { jobId: 1 },
+ statusCode: 200,
+ },
+ {
+ output: { version: 'v0', endpoint: 'http://abc', userId: '' },
+ metadata: { jobId: 2 },
+ statusCode: 200,
+ },
+ ];
+
+ const response = await request(server)
+ .post('/v0/destinations/__rudder_test__')
+ .set('Accept', 'application/json')
+ .send(getInputData());
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual(expected);
+ expect(getDestHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock destination) Batching', async () => {
+ const destType = '__rudder_test__';
+ const version = 'v0';
+
+ const getBatchInputData = () => {
+ return {
+ input: [
+ { message: { a: 'b1' }, destination: {}, metadata: { jobId: 1 } },
+ { message: { a: 'b2' }, destination: {}, metadata: { jobId: 2 } },
+ ],
+ destType: destType,
+ };
+ };
+ const tevent = [
+ {
+ batchedRequest: { version: 'v0', endpoint: 'http://abc' },
+ metadata: [{ jobId: 1 }, { jobId: 2 }],
+ statusCode: 200,
+ },
+ ];
+
+ const getDestHandlerSpy = jest
+ .spyOn(FetchHandler, 'getDestHandler')
+ .mockImplementationOnce((d, v) => {
+ expect(d).toEqual(destType);
+ expect(v).toEqual(version);
+ return {
+ batch: jest.fn(() => {
+ return tevent;
+ }),
+ };
+ });
+
+ const response = await request(server)
+ .post('/batch')
+ .set('Accept', 'application/json')
+ .send(getBatchInputData());
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual(tevent);
+ expect(getDestHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock destination) Router transformation', async () => {
+ const destType = '__rudder_test__';
+ const version = 'v0';
+
+ const getRouterTransformInputData = () => {
+ return {
+ input: [
+ { message: { a: 'b1' }, destination: {}, metadata: { jobId: 1 } },
+ { message: { a: 'b2' }, destination: {}, metadata: { jobId: 2 } },
+ ],
+ destType: destType,
+ };
+ };
+ const tevent = [
+ {
+ batchedRequest: { version: 'v0', endpoint: 'http://abc' },
+ metadata: [{ jobId: 1 }, { jobId: 2 }],
+ statusCode: 200,
+ },
+ ];
+
+ const getDestHandlerSpy = jest
+ .spyOn(FetchHandler, 'getDestHandler')
+ .mockImplementationOnce((d, v) => {
+ expect(d).toEqual(destType);
+ expect(v).toEqual(version);
+ return {
+ processRouterDest: jest.fn(() => {
+ return tevent;
+ }),
+ };
+ });
+
+ const response = await request(server)
+ .post('/routerTransform')
+ .set('Accept', 'application/json')
+ .send(getRouterTransformInputData());
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual({ output: tevent });
+ expect(getDestHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock destination) v0 proxy', async () => {
+ const destType = '__rudder_test__';
+ const version = 'v0';
+
+ const getData = () => {
+ return {
+ body: { JSON: { a: 'b' } },
+ metadata: { a1: 'b1' },
+ destinationConfig: { a2: 'b2' },
+ };
+ };
+
+ const proxyResponse = { success: true, response: { response: 'response', code: 200 } };
+
+ const mockNetworkHandler = {
+ proxy: jest.fn((r, d) => {
+ expect(r).toEqual(getData());
+ expect(d).toEqual(destType);
+ return proxyResponse;
+ }),
+ processAxiosResponse: jest.fn((r) => {
+ expect(r).toEqual(proxyResponse);
+ return { response: 'response', status: 200 };
+ }),
+ responseHandler: jest.fn((o, d) => {
+ expect(o.destinationResponse).toEqual({ response: 'response', status: 200 });
+ expect(o.rudderJobMetadata).toEqual({ a1: 'b1' });
+ expect(o.destType).toEqual(destType);
+ return { status: 200, message: 'response', destinationResponse: 'response' };
+ }),
+ };
+
+ const getNetworkHandlerSpy = jest
+ .spyOn(networkHandlerFactory, 'getNetworkHandler')
+ .mockImplementationOnce((d, v) => {
+ expect(d).toEqual(destType);
+ expect(v).toEqual(version);
+ return {
+ networkHandler: mockNetworkHandler,
+ handlerVersion: version,
+ };
+ });
+
+ const response = await request(server)
+ .post('/v0/destinations/__rudder_test__/proxy')
+ .set('Accept', 'application/json')
+ .send(getData());
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual({
+ output: { status: 200, message: 'response', destinationResponse: 'response' },
+ });
+ expect(getNetworkHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock destination) v1 proxy', async () => {
+ const destType = '__rudder_test__';
+ const version = 'v1';
+
+ const getData = () => {
+ return {
+ body: { JSON: { a: 'b' } },
+ metadata: [{ a1: 'b1' }],
+ destinationConfig: { a2: 'b2' },
+ };
+ };
+
+ const proxyResponse = { success: true, response: { response: 'response', code: 200 } };
+ const respHandlerResponse = {
+ status: 200,
+ message: 'response',
+ destinationResponse: 'response',
+ response: [{ statusCode: 200, metadata: { a1: 'b1' } }],
+ };
+
+ const mockNetworkHandler = {
+ proxy: jest.fn((r, d) => {
+ expect(r).toEqual(getData());
+ expect(d).toEqual(destType);
+ return proxyResponse;
+ }),
+ processAxiosResponse: jest.fn((r) => {
+ expect(r).toEqual(proxyResponse);
+ return { response: 'response', status: 200 };
+ }),
+ responseHandler: jest.fn((o, d) => {
+ expect(o.destinationResponse).toEqual({ response: 'response', status: 200 });
+ expect(o.rudderJobMetadata).toEqual([{ a1: 'b1' }]);
+ expect(o.destType).toEqual(destType);
+ return respHandlerResponse;
+ }),
+ };
+
+ const getNetworkHandlerSpy = jest
+ .spyOn(networkHandlerFactory, 'getNetworkHandler')
+ .mockImplementationOnce((d, v) => {
+ expect(d).toEqual(destType);
+ expect(v).toEqual(version);
+ return {
+ networkHandler: mockNetworkHandler,
+ handlerVersion: version,
+ };
+ });
+
+ const response = await request(server)
+ .post('/v1/destinations/__rudder_test__/proxy')
+ .set('Accept', 'application/json')
+ .send(getData());
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual({
+ output: respHandlerResponse,
+ });
+ expect(getNetworkHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock source) v0 source transformation', async () => {
+ const sourceType = '__rudder_test__';
+ const version = 'v0';
+
+ const getData = () => {
+ return [{ event: { a: 'b1' } }, { event: { a: 'b2' } }];
+ };
+
+ const tevent = { event: 'clicked', type: 'track' };
+
+ const getSourceHandlerSpy = jest
+ .spyOn(FetchHandler, 'getSourceHandler')
+ .mockImplementationOnce((s, v) => {
+ expect(s).toEqual(sourceType);
+ return {
+ process: jest.fn(() => {
+ return tevent;
+ }),
+ };
+ });
+
+ const response = await request(server)
+ .post('/v0/sources/__rudder_test__')
+ .set('Accept', 'application/json')
+ .send(getData());
+
+ const expected = [
+ { output: { batch: [{ event: 'clicked', type: 'track' }] } },
+ { output: { batch: [{ event: 'clicked', type: 'track' }] } },
+ ];
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual(expected);
+ expect(getSourceHandlerSpy).toHaveBeenCalledTimes(1);
+ });
+
+ test('(mock source) v1 source transformation', async () => {
+ const sourceType = '__rudder_test__';
+ const version = 'v1';
+
+ const getData = () => {
+ return [
+ { event: { a: 'b1' }, source: { id: 'id' } },
+ { event: { a: 'b2' }, source: { id: 'id' } },
+ ];
+ };
+
+ const tevent = { event: 'clicked', type: 'track' };
+
+ const getSourceHandlerSpy = jest
+ .spyOn(FetchHandler, 'getSourceHandler')
+ .mockImplementationOnce((s, v) => {
+ expect(s).toEqual(sourceType);
+ return {
+ process: jest.fn(() => {
+ return tevent;
+ }),
+ };
+ });
+
+ const response = await request(server)
+ .post('/v1/sources/__rudder_test__')
+ .set('Accept', 'application/json')
+ .send(getData());
+
+ const expected = [
+ { output: { batch: [{ event: 'clicked', type: 'track' }] } },
+ { output: { batch: [{ event: 'clicked', type: 'track' }] } },
+ ];
+
+ expect(response.status).toEqual(200);
+ expect(JSON.parse(response.text)).toEqual(expected);
+ expect(getSourceHandlerSpy).toHaveBeenCalledTimes(1);
+ });
});
describe('Destination api tests', () => {
@@ -153,6 +515,7 @@ describe('Destination api tests', () => {
expect(response.status).toEqual(200);
expect(JSON.parse(response.text)).toEqual(data.output);
});
+
test('(pinterest_tag) failure router transform(partial failure)', async () => {
const data = getDataFromPath('./data_scenarios/destination/router/failure_test.json');
const response = await request(server)
diff --git a/test/controllerUtility/ctrl-utility.test.ts b/test/controllerUtility/ctrl-utility.test.ts
deleted file mode 100644
index bf9eef1846f..00000000000
--- a/test/controllerUtility/ctrl-utility.test.ts
+++ /dev/null
@@ -1,1446 +0,0 @@
-import { ProcessorTransformationRequest, RouterTransformationRequestData } from '../../src/types';
-import { ControllerUtility } from '../../src/controllers/util';
-
-type timestampTestCases = {
- caseName: string;
- expectedOutputEvents: Array;
- inputEvents: Array;
-};
-
-const timestampEventsCases: timestampTestCases[] = [
- {
- caseName: 'when events(all track), timestamp should be taken from properties.timestamp',
- expectedOutputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-23T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-23T00:29:12.117+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- inputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-23T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-12-23T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- },
- {
- caseName:
- 'when events(all track) without properties.timestamp, timestamp should be taken from timestamp',
- expectedOutputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- someTime: '2023-01-23T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- inputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- someTime: '2023-01-23T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- },
- {
- caseName:
- 'when events(all identify) without context.timestamp, timestamp should be taken from timestamp',
- expectedOutputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- timestamp: '2023-01-12T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-12T00:29:12.117+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- inputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- timestamp: '2023-01-12T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- },
- {
- caseName:
- 'when proc events(identify, track, group) are mixed, timestamp should be taken from relevant places for identify & track, skipped for group',
- expectedOutputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- traits: {
- timestamp: '2023-01-22T00:29:12.117+05:30',
- },
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-22T00:29:12.117+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073231',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- traits: {
- timestamp: '2023-01-11T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-11T00:29:12.117+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-13T00:29:12.117+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'group',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- inputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- traits: {
- timestamp: '2023-01-22T00:29:12.117+05:30',
- },
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073231',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- traits: {
- timestamp: '2023-01-11T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'group',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- },
- {
- caseName:
- 'when a mix of VDM enabled & non-VDM destinations are available, the timestamp will be applied to only non-VDM destination',
- expectedOutputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- traits: {
- timestamp: '2023-01-22T00:29:12.117+05:30',
- },
- mappedToDestination: true,
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073231',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- traits: {
- timestamp: '2023-01-11T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2023-01-11T00:29:12.117+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPy',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string-2',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- mappedToDestination: true,
- },
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- context: {
- mappedToDestination: true,
- },
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'group',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- inputEvents: [
- {
- message: {
- anonymousId: '2073230',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- traits: {
- timestamp: '2023-01-22T00:29:12.117+05:30',
- },
- mappedToDestination: true,
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073231',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- traits: {
- timestamp: '2023-01-11T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'identify',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPy',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string-2',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- mappedToDestination: true,
- },
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'track',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- {
- message: {
- anonymousId: '2073232',
- event: 'Test',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- originalTimestamp: '2022-12-23T00:29:12.117+05:30',
- channel: 'sources',
- context: {
- mappedToDestination: true,
- },
- properties: {
- timestamp: '2023-01-13T00:29:12.117+05:30',
- },
- sentAt: '2022-12-23T00:29:12.117+05:30',
- timestamp: '2022-11-22T00:29:10.188+05:30',
- type: 'group',
- userId: '2564871',
- },
- metadata: {
- sourceId: '27O0bmEEx3GgfmEhZHUcPwJQVWC',
- workspaceId: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
- namespace: '',
- instanceId: '1',
- sourceType: 'HTTP',
- sourceCategory: '',
- trackingPlanId: '',
- trackingPlanVersion: 0,
- sourceTpConfig: {},
- mergedTpConfig: {},
- destinationId: '2JH9GMQf2YFJFaTw7rz1pxHAJPx',
- jobRunId: '',
- jobId: 1,
- sourceBatchId: '',
- sourceJobId: '',
- sourceJobRunId: '',
- sourceTaskId: '',
- sourceTaskRunId: '',
- recordId: {},
- destinationType: 'WEBHOOK',
- messageId: 'e3a51e9a-6313-4389-ae73-07e487c8d9d0',
- oauthAccessToken: '',
- messageIds: [],
- rudderId: '<<>>2073230<<>>2564871',
- receivedAt: '2022-12-23T00:29:10.189+05:30',
- eventName: 'Test',
- eventType: 'track',
- sourceDefinitionId: '1b6gJdqOPOCadT3cddw8eidV591',
- destinationDefinitionId: '',
- transformationId: '',
- },
- destination: {
- ID: 'string',
- Name: 'string',
- DestinationDefinition: {
- ID: 'defid1',
- Name: 'INTERCOM',
- DisplayName: 'intercom',
- Config: {},
- },
- Config: {},
- Enabled: true,
- WorkspaceID: 'wspId',
- Transformations: [],
- },
- },
- ],
- },
-];
-
-describe('controller utility tests -- handleTimestampInEvents', () => {
- test.each(timestampEventsCases)(
- '$caseName',
- ({ inputEvents, expectedOutputEvents: outputEvents }) => {
- const actualEvents = ControllerUtility.handleTimestampInEvents(inputEvents);
- expect(actualEvents).toStrictEqual(outputEvents);
- },
- );
-});
diff --git a/test/deleteUsers/data/iterable/handler_input.json b/test/deleteUsers/data/iterable/handler_input.json
deleted file mode 100644
index 8ebc859089a..00000000000
--- a/test/deleteUsers/data/iterable/handler_input.json
+++ /dev/null
@@ -1,93 +0,0 @@
-[
- {
- "request": {
- "body": [
- {
- "destType": "ITERABLE",
- "userAttributes": [
- {
- "userId": "rudder1"
- }
- ]
- }
- ]
- }
- },
- {
- "request": {
- "body": [
- {
- "destType": "ITERABLE",
- "userAttributes": [
- {
- "userId": "rudder2"
- }
- ],
- "config": {
- "apiToken": "dummyApiKey"
- }
- }
- ]
- }
- },
- {
- "request": {
- "body": [
- {
- "destType": "ITERABLE",
- "userAttributes": [
- {
- "userId": "rudder1"
- },
- {
- "userId": "rudder2"
- }
- ],
- "config": {
- "apiKey": "dummyApiKey"
- }
- }
- ]
- }
- },
- {
- "request": {
- "body": [
- {
- "destType": "ITERABLE",
- "userAttributes": [
- {
- "userId": "rudder3"
- },
- {
- "userId": "rudder4"
- }
- ],
- "config": {
- "apiKey": "invalidKey"
- }
- }
- ]
- }
- },
- {
- "request": {
- "body": [
- {
- "destType": "ITERABLE",
- "userAttributes": [
- {
- "userId": "rudder5"
- },
- {
- "userId": "rudder6"
- }
- ],
- "config": {
- "apiKey": "dummyApiKey"
- }
- }
- ]
- }
- }
-]
diff --git a/test/deleteUsers/data/iterable/handler_output.json b/test/deleteUsers/data/iterable/handler_output.json
deleted file mode 100644
index b053d04df4a..00000000000
--- a/test/deleteUsers/data/iterable/handler_output.json
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- [
- {
- "statusCode": 400,
- "error": "Config for deletion not present"
- }
- ],
- [
- {
- "statusCode": 400,
- "error": "api key for deletion not present"
- }
- ],
- [
- {
- "statusCode": 400,
- "error": "User deletion request failed for userIds : [{\"userId\":\"rudder2\",\"Reason\":\"User does not exist. Email: UserId: rudder2\"}]"
- }
- ],
- [
- {
- "error": "User deletion request failed : Invalid API key",
- "statusCode": 401
- }
- ],
- [
- {
- "statusCode": 200,
- "status": "successful"
- }
- ]
-]
diff --git a/test/deleteUsers/data/iterable/nw_client_data.json b/test/deleteUsers/data/iterable/nw_client_data.json
deleted file mode 100644
index 159c301b115..00000000000
--- a/test/deleteUsers/data/iterable/nw_client_data.json
+++ /dev/null
@@ -1,138 +0,0 @@
-[
- [
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder1",
- {},
- {
- "Accept": "application/json",
- "api_key": "dummyApiKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "All users associated with rudder1 were successfully deleted",
- "code": "Success",
- "params": null
- },
- "status": 200
- }
- }
- },
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder2",
- {},
- {
- "Accept": "application/json",
- "api_key": "dummyApiKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "User does not exist. Email: UserId: rudder2",
- "code": "BadParams",
- "params": null
- },
- "status": 400
- }
- }
- }
- ],
- [
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder3",
- {},
- {
- "Accept": "application/json",
- "api_key": "invalidKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "Invalid API key",
- "code": "Success",
- "params": {
- "endpoint": "/api/users/byUserId/rudder3"
- }
- },
- "status": 401
- }
- }
- },
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder4",
- {},
- {
- "Accept": "application/json",
- "api_key": "invalidKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "Invalid API key",
- "code": "Success",
- "params": {
- "endpoint": "/api/users/byUserId/rudder3"
- }
- },
- "status": 401
- }
- }
- }
- ],
- [
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder5",
- {},
- {
- "Accept": "application/json",
- "api_key": "dummyApiKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "All users associated with rudder5 were successfully deleted",
- "code": "Success",
- "params": null
- },
- "status": 200
- }
- }
- },
- {
- "type": "delete",
- "reqParams": [
- "https://api.iterable.com/api/users/byUserId/rudder6",
- {},
- {
- "Accept": "application/json",
- "api_key": "dummyApiKey"
- }
- ],
- "response": {
- "response": {
- "data": {
- "msg": "All users associated with rudder6 were successfully deleted",
- "code": "Success",
- "params": null
- },
- "status": 200
- }
- }
- }
- ]
-]
diff --git a/test/integrations/common/criteo/network.ts b/test/integrations/common/criteo/network.ts
new file mode 100644
index 00000000000..cd5e1ca1e81
--- /dev/null
+++ b/test/integrations/common/criteo/network.ts
@@ -0,0 +1,72 @@
+const headers = {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'User-Agent': 'RudderLabs',
+};
+const params = { destination: 'criteo_audience' };
+const method = 'PATCH';
+const commonData = {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+};
+
+export const networkCallsData = [
+ {
+ description: 'Mock response depicting expired access token error',
+ httpReq: {
+ url: 'https://api.criteo.com/2022-10/audiences/3485/contactlist/expiredAccessToken',
+ data: commonData,
+ params,
+ headers,
+ method,
+ },
+ httpRes: {
+ code: '400',
+ data: {
+ errors: [
+ {
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ code: 'authorization-token-expired',
+ instance: '/2022-10/audiences/123/contactlist',
+ title: 'The authorization token has expired',
+ },
+ ],
+ },
+ status: 401,
+ },
+ },
+ {
+ description: 'Mock response depicting invalid access token error',
+ httpReq: {
+ url: 'https://api.criteo.com/2022-10/audiences/34895/contactlist/invalidAccessToken',
+ data: commonData,
+ params,
+ headers,
+ method,
+ },
+ httpRes: {
+ code: '400',
+ data: {
+ errors: [
+ {
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ code: 'authorization-token-invalid',
+ instance: '/2022-10/audiences/123/contactlist',
+ title: 'The authorization header is invalid',
+ },
+ ],
+ },
+ status: 401,
+ },
+ },
+];
diff --git a/test/integrations/common/google/network.ts b/test/integrations/common/google/network.ts
new file mode 100644
index 00000000000..95b76f8da81
--- /dev/null
+++ b/test/integrations/common/google/network.ts
@@ -0,0 +1,109 @@
+// Ads API
+// Ref: https://developers.google.com/google-ads/api/docs/get-started/common-errors
+
+export const networkCallsData = [
+ {
+ description: 'Mock response depicting CREDENTIALS_MISSING error',
+ httpReq: {
+ method: 'post',
+ url: 'https://googleapis.com/test_url_for_credentials_missing',
+ },
+ httpRes: {
+ data: {
+ error: {
+ code: 401,
+ message:
+ 'Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ errors: [
+ {
+ message: 'Login Required.',
+ domain: 'global',
+ reason: 'required',
+ location: 'Authorization',
+ locationType: 'header',
+ },
+ ],
+ status: 'UNAUTHENTICATED',
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
+ reason: 'CREDENTIALS_MISSING',
+ domain: 'googleapis.com',
+ metadata: {
+ method: 'google.ads.xfa.op.v4.DfareportingConversions.Batchinsert',
+ service: 'googleapis.com',
+ },
+ },
+ ],
+ },
+ },
+ status: 401,
+ },
+ },
+ {
+ description: 'Mock response depicting ACCESS_TOKEN_SCOPE_INSUFFICIENT error',
+ httpReq: {
+ method: 'post',
+ url: 'https://googleapis.com/test_url_for_access_token_scope_insufficient',
+ },
+ httpRes: {
+ data: {
+ error: {
+ code: 403,
+ message: 'Request had insufficient authentication scopes.',
+ errors: [
+ {
+ message: 'Insufficient Permission',
+ domain: 'global',
+ reason: 'insufficientPermissions',
+ },
+ ],
+ status: 'PERMISSION_DENIED',
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
+ reason: 'ACCESS_TOKEN_SCOPE_INSUFFICIENT',
+ domain: 'googleapis.com',
+ metadata: {
+ service: 'gmail.googleapis.com',
+ method: 'caribou.api.proto.MailboxService.GetProfile',
+ },
+ },
+ ],
+ },
+ },
+ status: 403,
+ },
+ },
+ {
+ description: 'Mock response for google.auth.exceptions.RefreshError invalid_grant error',
+ httpReq: {
+ method: 'post',
+ url: 'https://googleapis.com/test_url_for_invalid_grant',
+ },
+ httpRes: {
+ data: {
+ error: {
+ code: 403,
+ message: 'invalid_grant',
+ error_description: 'Bad accesss',
+ },
+ },
+ status: 403,
+ },
+ },
+ {
+ description: 'Mock response for google.auth.exceptions.RefreshError refresh_token error',
+ httpReq: {
+ method: 'post',
+ url: 'https://googleapis.com/test_url_for_refresh_error',
+ },
+ httpRes: {
+ data: {
+ error: 'unauthorized',
+ error_description: 'Access token expired: 2020-10-20T12:00:00.000Z',
+ },
+ status: 401,
+ },
+ },
+];
diff --git a/test/integrations/common/network.ts b/test/integrations/common/network.ts
new file mode 100644
index 00000000000..8b0ed16c72c
--- /dev/null
+++ b/test/integrations/common/network.ts
@@ -0,0 +1,84 @@
+export const networkCallsData = [
+ {
+ description: 'Mock response depicting SERVICE NOT AVAILABLE error',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_service_not_available',
+ },
+ httpRes: {
+ data: {
+ error: {
+ message: 'Service Unavailable',
+ description:
+ 'The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later.',
+ },
+ },
+ status: 503,
+ },
+ },
+ {
+ description: 'Mock response depicting INTERNAL SERVER ERROR error with post method',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_internal_server_error',
+ },
+ httpRes: {
+ data: 'Internal Server Error',
+ status: 500,
+ },
+ },
+ {
+ description: 'Mock response depicting INTERNAL SERVER ERROR error with patch method',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_internal_server_error',
+ },
+ httpRes: {
+ data: 'Internal Server Error',
+ status: 500,
+ },
+ },
+ {
+ description: 'Mock response depicting GATEWAY TIME OUT error',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_gateway_time_out',
+ },
+ httpRes: {
+ data: 'Gateway Timeout',
+ status: 504,
+ },
+ },
+ {
+ description: 'Mock response depicting null response',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_null_response',
+ },
+ httpRes: {
+ data: null,
+ status: 500,
+ },
+ },
+ {
+ description: 'Mock response depicting null and no status',
+ httpReq: {
+ method: 'post',
+ url: 'https://random_test_url/test_for_null_and_no_status',
+ },
+ httpRes: {
+ data: null,
+ },
+ },
+ {
+ description: 'Mock response depicting TOO MANY REQUESTS error with patch method',
+ httpReq: {
+ method: 'patch',
+ url: 'https://random_test_url/test_for_too_many_requests',
+ },
+ httpRes: {
+ data: {},
+ status: 429,
+ },
+ },
+];
diff --git a/test/integrations/component.test.ts b/test/integrations/component.test.ts
index 847dd4c91fc..388c283c615 100644
--- a/test/integrations/component.test.ts
+++ b/test/integrations/component.test.ts
@@ -16,11 +16,14 @@ import {
getMockHttpCallsData,
getAllTestMockDataFilePaths,
addMock,
+ validateTestWithZOD,
} from './testUtils';
import tags from '../../src/v0/util/tags';
import { Server } from 'http';
import { appendFileSync } from 'fs';
-import { responses } from '../testHelper';
+import { assertRouterOutput, responses } from '../testHelper';
+import { generateTestReport, initaliseReport } from '../test_reporter/reporter';
+import _ from 'lodash';
// To run single destination test cases
// npm run test:ts -- component --destination=adobe_analytics
@@ -37,6 +40,7 @@ command
.option('-f, --feature ', 'Enter Feature Name(processor, router)')
.option('-i, --index ', 'Enter Test index')
.option('-g, --generate ', 'Enter "true" If you want to generate network file')
+ .option('-id, --id ', 'Enter unique "Id" of the test case you want to run')
.parse();
const opts = command.opts();
@@ -50,7 +54,10 @@ if (opts.generate === 'true') {
let server: Server;
+const INTEGRATIONS_WITH_UPDATED_TEST_STRUCTURE = ['klaviyo', 'campaign_manager', 'criteo_audience'];
+
beforeAll(async () => {
+ initaliseReport();
const app = new Koa();
app.use(
bodyParser({
@@ -122,8 +129,36 @@ const testRoute = async (route, tcData: TestCaseData) => {
.query(params || {})
.send(body);
const outputResp = tcData.output.response || ({} as any);
+
+ if (tcData.feature === tags.FEATURES.BATCH || tcData.feature === tags.FEATURES.ROUTER) {
+ //TODO get rid of these skipped destinations after they are fixed
+ if (
+ tcData.name != 'marketo_static_list' &&
+ tcData.name != 'mailmodo' &&
+ tcData.name != 'hs' &&
+ tcData.name != 'iterable' &&
+ tcData.name != 'klaviyo' &&
+ tcData.name != 'tiktok_ads' &&
+ tcData.name != 'mailjet' &&
+ tcData.name != 'google_adwords_offline_conversions'
+ ) {
+ assertRouterOutput(response.body.output, tcData.input.request.body.input);
+ }
+ }
+
expect(response.status).toEqual(outputResp.status);
+ if (INTEGRATIONS_WITH_UPDATED_TEST_STRUCTURE.includes(tcData.name?.toLocaleLowerCase())) {
+ expect(validateTestWithZOD(tcData, response)).toEqual(true);
+ const bodyMatched = _.isEqual(response.body, outputResp.body);
+ const statusMatched = response.status === outputResp.status;
+ if (bodyMatched && statusMatched) {
+ generateTestReport(tcData, response.body, 'passed');
+ } else {
+ generateTestReport(tcData, response.body, 'failed');
+ }
+ }
+
if (outputResp?.body) {
expect(response.body).toEqual(outputResp.body);
}
@@ -181,6 +216,14 @@ describe.each(allTestDataFilePaths)('%s Tests', (testDataPath) => {
if (opts.index !== undefined) {
testData = [testData[parseInt(opts.index)]];
}
+ if (opts.id) {
+ testData = testData.filter((data) => {
+ if (data['id'] === opts.id) {
+ return true;
+ }
+ return false;
+ });
+ }
describe(`${testData[0].name} ${testData[0].module}`, () => {
test.each(testData)('$feature -> $description', async (tcData) => {
tcData?.mockFns?.(mockAdapter);
diff --git a/test/integrations/destinations/active_campaign/router/data.ts b/test/integrations/destinations/active_campaign/router/data.ts
index 782d1e33799..f65a65d9bc5 100644
--- a/test/integrations/destinations/active_campaign/router/data.ts
+++ b/test/integrations/destinations/active_campaign/router/data.ts
@@ -18,9 +18,7 @@ export const data = [
eventKey: 'f8a866fddc721350fdc2fbbd2e5c43a6dddaaa03',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -30,21 +28,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -66,18 +56,9 @@ export const data = [
Random: 'random',
},
lists: [
- {
- id: 2,
- status: 'subscribe',
- },
- {
- id: 3,
- status: 'unsubscribe',
- },
- {
- id: 3,
- status: 'unsubscribexyz',
- },
+ { id: 2, status: 'subscribe' },
+ { id: 3, status: 'unsubscribe' },
+ { id: 3, status: 'unsubscribexyz' },
],
address: {
city: 'kolkata',
@@ -87,9 +68,7 @@ export const data = [
street: '',
},
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -117,22 +96,10 @@ export const data = [
lastName: 'Doe',
phone: '92374162212',
fieldValues: [
- {
- field: '0',
- value: 'Trastkiv',
- },
- {
- field: '1',
- value: 'Russia',
- },
- {
- field: '3',
- value: '||Potato||Onion||',
- },
- {
- field: '4',
- value: 'random',
- },
+ { field: '0', value: 'Trastkiv' },
+ { field: '1', value: 'Russia' },
+ { field: '3', value: '||Potato||Onion||' },
+ { field: '4', value: 'random' },
],
},
},
@@ -141,18 +108,11 @@ export const data = [
files: {},
method: 'POST',
params: {},
- headers: {
- 'Api-Token': 'dummyApiToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Api-Token': 'dummyApiToken', 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://active.campaigns.rudder.com/api/3/contact/sync',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -188,9 +148,7 @@ export const data = [
eventKey: 'f8a866fddc721350fdc2fbbd2e5c43a6dddaaa03',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -200,24 +158,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'jamesDoe@gmail.com',
- anonymousId: '12345',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'jamesDoe@gmail.com', anonymousId: '12345' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
request_ip: '1.1.1.1',
type: 'page',
@@ -234,9 +181,7 @@ export const data = [
title: 'Test Page',
url: 'https://www.rudderlabs.com',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T11:15:53.296Z',
},
},
@@ -257,28 +202,17 @@ export const data = [
XML: {},
FORM: {},
JSON_ARRAY: {},
- JSON: {
- siteTrackingDomain: {
- name: 'rudderlabs.com',
- },
- },
+ JSON: { siteTrackingDomain: { name: 'rudderlabs.com' } },
},
type: 'REST',
files: {},
method: 'POST',
params: {},
- headers: {
- 'Api-Token': 'dummyApiToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Api-Token': 'dummyApiToken', 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://active.campaigns.rudder.com/api/3/siteTrackingDomains',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -312,10 +246,7 @@ export const data = [
sentAt: '2023-01-10T22:31:10.954Z',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -342,10 +273,7 @@ export const data = [
innerHeight: 782,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '2.20.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.20.0' },
campaign: {},
sessionId: 1673389635049,
userAgent:
@@ -369,9 +297,7 @@ export const data = [
receivedAt: '2023-01-10T22:31:11.612Z',
request_ip: '0.0.0.20',
anonymousId: '878e8f5f-9b6c-4aef-b5d3-1b970a13f17a',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2023-01-10T22:31:10.943Z',
},
destination: {
@@ -382,9 +308,7 @@ export const data = [
eventKey: 'f8a866fddc721350fdc2fbbd2e5c43a6dddaaa03',
},
},
- metadata: {
- jobId: 5,
- },
+ metadata: { jobId: 5, userId: 'u1' },
},
],
destType: 'active_campaign',
@@ -408,11 +332,7 @@ export const data = [
module: 'destination',
},
statusCode: 400,
- metadata: [
- {
- jobId: 5,
- },
- ],
+ metadata: [{ jobId: 5, userId: 'u1' }],
batched: false,
destination: {
Config: {
diff --git a/test/integrations/destinations/adj/processor/data.ts b/test/integrations/destinations/adj/processor/data.ts
index 2c208d0d084..e28a25cf59d 100644
--- a/test/integrations/destinations/adj/processor/data.ts
+++ b/test/integrations/destinations/adj/processor/data.ts
@@ -2179,7 +2179,8 @@ export const data = [
status: 200,
body: [
{
- error: 'App Token is not present. Please configure your app token from config dashbaord',
+ error:
+ 'App Token is not present. Please configure your app token from config dashbaord',
statTags: {
destType: 'ADJ',
errorCategory: 'dataValidation',
@@ -2205,24 +2206,24 @@ export const data = [
body: [
{
message: {
- "type": "track",
- "event": "Application Installed",
- "sentAt": "2022-09-28T20:14:44.995Z",
- "userId": "sample_user_id",
- "context": {
- "device": {
- "id": "sample_device_id",
- "type": "android",
- "advertisingId": "_sample"
+ type: 'track',
+ event: 'Application Installed',
+ sentAt: '2022-09-28T20:14:44.995Z',
+ userId: 'sample_user_id',
+ context: {
+ device: {
+ id: 'sample_device_id',
+ type: 'android',
+ advertisingId: '_sample',
+ },
+ traits: {
+ userId: '_sample_uid',
+ anonymousId: '_sample_anonid',
},
- "traits": {
- "userId": "_sample_uid",
- "anonymousId": "_sample_anonid"
- }
- },
- "timestamp": "2022-09-28T20:14:43.314Z",
- "request_ip": "71.189.106.156",
- "originalTimestamp": "2022-09-28T20:14:44.995Z"
+ },
+ timestamp: '2022-09-28T20:14:43.314Z',
+ request_ip: '71.189.106.156',
+ originalTimestamp: '2022-09-28T20:14:44.995Z',
},
destination: {
ID: '1i3Em7GMU9xVEiDlZUN8c88BMS9',
@@ -2245,8 +2246,7 @@ export const data = [
},
Config: {
appToken: 'testAppToken',
- customMappings: [
- { from: 'Application Installed', to: '3fdmll' }],
+ customMappings: [{ from: 'Application Installed', to: '3fdmll' }],
partnerParamsKeys: [
{ from: 'key1', to: 'partnerParamKey-1' },
{ from: 'key2', to: 'partnerParamKey-2' },
@@ -2277,10 +2277,10 @@ export const data = [
endpoint: 'https://s2s.adjust.com/event',
headers: { Accept: '*/*' },
params: {
- event_token: "3fdmll",
- ip_address: "71.189.106.156",
+ event_token: '3fdmll',
+ ip_address: '71.189.106.156',
android_id: 'sample_device_id',
- gps_adid: "_sample",
+ gps_adid: '_sample',
s2s: 1,
app_token: 'testAppToken',
environment: 'production',
@@ -2294,4 +2294,5 @@ export const data = [
],
},
},
- },];
+ },
+];
diff --git a/test/integrations/destinations/adj/router/data.ts b/test/integrations/destinations/adj/router/data.ts
index c662d7b5570..22c4e899d2f 100644
--- a/test/integrations/destinations/adj/router/data.ts
+++ b/test/integrations/destinations/adj/router/data.ts
@@ -30,57 +30,26 @@ export const data = [
type: 'Android',
attTrackingStatus: 3,
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.6',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.6' },
locale: 'en-US',
- network: {
- bluetooth: false,
- carrier: 'Android',
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { bluetooth: false, carrier: 'Android', cellular: true, wifi: true },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '21e13f4bc7ceddad',
- },
+ traits: { anonymousId: '21e13f4bc7ceddad' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
event: 'First Investment',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-28T19:53:31.900Z',
properties: {
currency: 'EUR',
key1: 'value1',
key2: 'value2',
- key3: {
- k4: 'v4',
- k5: {
- k6: 'v6',
- },
- },
- key5: [
- {
- k: 'v1',
- },
- {
- k: 'v2',
- },
- ],
+ key3: { k4: 'v4', k5: { k6: 'v6' } },
+ key5: [{ k: 'v1' }, { k: 'v2' }],
revenue: 20.37566,
},
receivedAt: '2020-09-29T14:50:43.005+05:30',
@@ -89,9 +58,7 @@ export const data = [
timestamp: '2020-09-29T14:50:29.907+05:30',
type: 'track',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
ID: '1i3Em7GMU9xVEiDlZUN8c88BMS9',
Name: 'ADJ',
@@ -114,14 +81,8 @@ export const data = [
Config: {
appToken: 'testAppToken',
customMappings: [
- {
- from: 'Application Installed',
- to: '3fdmll',
- },
- {
- from: 'First Investment',
- to: 'testEventToken',
- },
+ { from: 'Application Installed', to: '3fdmll' },
+ { from: 'First Investment', to: 'testEventToken' },
],
environment: true,
},
@@ -147,9 +108,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://s2s.adjust.com/event',
- headers: {
- Accept: '*/*',
- },
+ headers: { Accept: '*/*' },
params: {
callback_params:
'{"key1":"value1","key2":"value2","key3.k4":"v4","key3.k5.k6":"v6","key5[0].k":"v1","key5[1].k":"v2"}',
@@ -165,20 +124,11 @@ export const data = [
event_token: 'testEventToken',
environment: 'production',
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
userId: '21e13f4bc7ceddad',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -203,14 +153,8 @@ export const data = [
Config: {
appToken: 'testAppToken',
customMappings: [
- {
- from: 'Application Installed',
- to: '3fdmll',
- },
- {
- from: 'First Investment',
- to: 'testEventToken',
- },
+ { from: 'Application Installed', to: '3fdmll' },
+ { from: 'First Investment', to: 'testEventToken' },
],
environment: true,
},
@@ -255,57 +199,26 @@ export const data = [
type: 'ios',
attTrackingStatus: 3,
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.6',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.6' },
locale: 'en-US',
- network: {
- bluetooth: false,
- carrier: 'Android',
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { bluetooth: false, carrier: 'Android', cellular: true, wifi: true },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '21e13f4bc7ceddad',
- },
+ traits: { anonymousId: '21e13f4bc7ceddad' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
event: 'First Investment',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-28T19:53:31.900Z',
properties: {
currency: 'EUR',
key1: 'value1',
key2: 'value2',
- key3: {
- k4: 'v4',
- k5: {
- k6: 'v6',
- },
- },
- key5: [
- {
- k: 'v1',
- },
- {
- k: 'v2',
- },
- ],
+ key3: { k4: 'v4', k5: { k6: 'v6' } },
+ key5: [{ k: 'v1' }, { k: 'v2' }],
revenue: 20.37566,
},
receivedAt: '2020-09-29T14:50:43.005+05:30',
@@ -314,9 +227,7 @@ export const data = [
timestamp: '2020-09-29T14:50:29.907+05:30',
type: 'track',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
ID: '1i3Em7GMU9xVEiDlZUN8c88BMS9',
Name: 'ADJ',
@@ -339,14 +250,8 @@ export const data = [
Config: {
appToken: 'testAppToken',
customMappings: [
- {
- from: 'Application Installed',
- to: '3fdmll',
- },
- {
- from: 'First Investment',
- to: 'testEventToken',
- },
+ { from: 'Application Installed', to: '3fdmll' },
+ { from: 'First Investment', to: 'testEventToken' },
],
environment: true,
},
@@ -372,9 +277,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://s2s.adjust.com/event',
- headers: {
- Accept: '*/*',
- },
+ headers: { Accept: '*/*' },
params: {
callback_params:
'{"key1":"value1","key2":"value2","key3.k4":"v4","key3.k5.k6":"v6","key5[0].k":"v1","key5[1].k":"v2"}',
@@ -390,20 +293,11 @@ export const data = [
event_token: 'testEventToken',
environment: 'production',
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
userId: '21e13f4bc7ceddad',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -428,14 +322,8 @@ export const data = [
Config: {
appToken: 'testAppToken',
customMappings: [
- {
- from: 'Application Installed',
- to: '3fdmll',
- },
- {
- from: 'First Investment',
- to: 'testEventToken',
- },
+ { from: 'Application Installed', to: '3fdmll' },
+ { from: 'First Investment', to: 'testEventToken' },
],
environment: true,
},
diff --git a/test/integrations/destinations/af/processor/data.ts b/test/integrations/destinations/af/processor/data.ts
index 8b639f45c02..d0fd29b0890 100644
--- a/test/integrations/destinations/af/processor/data.ts
+++ b/test/integrations/destinations/af/processor/data.ts
@@ -45,6 +45,7 @@ export const data = [
destination: {
Config: { devKey: 'ef1d42390426e3f7c90ac78272e74344', androidAppId: 'appId' },
Enabled: true,
+ addPropertiesAtRoot: false,
},
},
],
@@ -118,6 +119,7 @@ export const data = [
Config: {
devKey: 'ef1d42390426e3f7c90ac78272e74344',
androidAppId: 'com.rudderlabs.javascript',
+ addPropertiesAtRoot: false,
},
Enabled: true,
},
@@ -305,6 +307,7 @@ export const data = [
Config: {
devKey: 'ef1d42390426e3f7c90ac78272e74344',
androidAppId: 'com.rudderlabs.javascript',
+ addPropertiesAtRoot: false,
},
Enabled: true,
},
@@ -1532,4 +1535,306 @@ export const data = [
},
},
},
+ {
+ name: 'af',
+ description: 'Place Properties at root level Page Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [{ type: 'appsflyerExternalId', id: 'afUid' }],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ name: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: 'android', version: '' },
+ screen: { density: 2 },
+ },
+ type: 'page',
+ messageId: 'e8585d9a-7137-4223-b295-68ab1b17dad7',
+ originalTimestamp: '2019-10-15T09:35:31.289Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: { path: '', referrer: '', search: '', title: '', url: '' },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ integrations: { AF: { af_uid: 'afUid' } },
+ },
+ destination: {
+ Config: {
+ devKey: 'ef1d42390426e3f7c90ac78272e74344',
+ androidAppId: 'com.rudderlabs.javascript',
+ sharingFilter: 'all',
+ addPropertiesAtRoot: true,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ endpoint: 'https://api2.appsflyer.com/inappevent/com.rudderlabs.javascript',
+ headers: {
+ 'Content-Type': 'application/json',
+ authentication: 'ef1d42390426e3f7c90ac78272e74344',
+ },
+ method: 'POST',
+ params: {},
+ body: {
+ JSON: {
+ app_version_name: '1.0.0',
+ bundleIdentifier: 'com.rudderlabs.javascript',
+ customer_user_id: '12345',
+ eventValue: '{"path":"","referrer":"","search":"","title":"","url":""}',
+ eventName: 'page',
+ appsflyer_id: 'afUid',
+ os: '',
+ ip: '0.0.0.0',
+ sharing_filter: 'all',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'af',
+ description: 'Place properties at root level track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [{ type: 'appsflyerExternalId', id: 'afUid' }],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: { email: 'testhubspot2@email.com', name: 'Test Hubspot' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: 'android', version: '' },
+ screen: { density: 2 },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: { user_actual_role: 'system_admin, system_user', user_actual_id: 12345 },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ integrations: { AF: { af_uid: 'afUid' } },
+ },
+ destination: {
+ Config: {
+ devKey: 'ef1d42390426e3f7c90ac78272e74344',
+ androidAppId: 'com.rudderlabs.javascript',
+ addPropertiesAtRoot: true,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.appsflyer.com/inappevent/com.rudderlabs.javascript',
+ headers: {
+ 'Content-Type': 'application/json',
+ authentication: 'ef1d42390426e3f7c90ac78272e74344',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventValue:
+ '{"user_actual_role":"system_admin, system_user","user_actual_id":12345}',
+ eventName: 'test track event HS',
+ customer_user_id: '12345',
+ ip: '0.0.0.0',
+ os: '',
+ appsflyer_id: 'afUid',
+ app_version_name: '1.0.0',
+ bundleIdentifier: 'com.rudderlabs.javascript',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'af',
+ description: 'Place properties at root track call with af data',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ externalId: [{ type: 'appsflyerExternalId', id: 'afUid' }],
+ source: 'test',
+ app: { namespace: 'com.rudderlabs.javascript' },
+ os: { name: 'android' },
+ traits: { anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'ZAR',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: { AF: { af_uid: 'afUid' } },
+ },
+ destination: {
+ Config: {
+ devKey: 'abcde',
+ androidAppId: 'com.rudderlabs.javascript',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: false,
+ addPropertiesAtRoot: true,
+ },
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.appsflyer.com/inappevent/com.rudderlabs.javascript',
+ headers: { 'Content-Type': 'application/json', authentication: 'abcde' },
+ params: {},
+ body: {
+ JSON: {
+ bundleIdentifier: 'com.rudderlabs.javascript',
+ eventValue:
+ '{"tax":2,"total":27.5,"coupon":"hasbros","revenue":48,"price":25,"quantity":2,"currency":"ZAR","discount":2.5,"order_id":"50314b8e9bcf000000000000","products":[{"sku":"45790-32","url":"https://www.example.com/product/path","name":"Monopoly: 3rd Edition","price":19,"category":"Games","quantity":1,"image_url":"https:///www.example.com/product/path.jpg","product_id":"507f1f77bcf86cd799439011"},{"sku":"46493-32","name":"Uno Card Game","price":3,"category":"Games","quantity":2,"product_id":"505bd76785ebb509fc183733"}],"shipping":3,"subtotal":22.5,"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","af_revenue":48,"af_price":[19,3],"af_quantity":[1,2],"af_order_id":"50314b8e9bcf000000000000","af_content_id":["507f1f77bcf86cd799439011","505bd76785ebb509fc183733"]}',
+ eventName: 'Order Completed',
+ eventCurrency: 'ZAR',
+ eventTime: '2020-08-14T05:30:30.118Z',
+ appsflyer_id: 'afUid',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/af/router/data.ts b/test/integrations/destinations/af/router/data.ts
index 46f30fef81e..b6dca3a75ec 100644
--- a/test/integrations/destinations/af/router/data.ts
+++ b/test/integrations/destinations/af/router/data.ts
@@ -43,7 +43,7 @@ export const data = [
sentAt: '2019-10-14T11:15:53.296Z',
integrations: { AF: { af_uid: 'afUid' } },
},
- metadata: { jobId: 2 },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
devKey: 'ef1d42390426e3f7c90ac78272e74344',
@@ -85,7 +85,7 @@ export const data = [
sentAt: '2019-10-14T11:15:53.296Z',
integrations: { AF: { af_uid: 'afUid' } },
},
- metadata: { jobId: 2 },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
devKey: 'ef1d42390426e3f7c90ac78272e74344',
@@ -128,7 +128,7 @@ export const data = [
sentAt: '2019-10-14T11:15:53.296Z',
integrations: { AF: { af_uid: 'afUid' } },
},
- metadata: { jobId: 2 },
+ metadata: { jobId: 4, userId: 'u1' },
destination: {
Config: {
devKey: 'ef1d42390426e3f7c90ac78272e74344',
@@ -177,7 +177,7 @@ export const data = [
},
files: {},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -217,7 +217,7 @@ export const data = [
},
files: {},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -257,7 +257,7 @@ export const data = [
},
files: {},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 4, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/airship/router/data.ts b/test/integrations/destinations/airship/router/data.ts
index bc11bc2cfc8..8ed6f57a42d 100644
--- a/test/integrations/destinations/airship/router/data.ts
+++ b/test/integrations/destinations/airship/router/data.ts
@@ -11,15 +11,9 @@ export const data = [
input: [
{
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- appKey: 'O2YARRI15I',
- dataCenter: false,
- },
- },
- metadata: {
- jobId: 1,
+ Config: { apiKey: 'dummyApiKey', appKey: 'O2YARRI15I', dataCenter: false },
},
+ metadata: { jobId: 1, userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -29,26 +23,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'testone@gmail.com',
- firstName: 'test',
- lastName: 'one',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'testone@gmail.com', firstName: 'test', lastName: 'one' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
type: 'track',
messageId: '84e26acc-56a5-4835-8233-591137fca468',
@@ -62,28 +44,14 @@ export const data = [
brand: 'Victory Sneakers',
colors: ['red', 'blue'],
items: [
- {
- text: 'New Line Sneakers',
- price: '$ 79.95',
- },
- {
- text: 'Old Line Sneakers',
- price: '$ 79.95',
- },
- {
- text: 'Blue Line Sneakers',
- price: '$ 79.95',
- },
+ { text: 'New Line Sneakers', price: '$ 79.95' },
+ { text: 'Old Line Sneakers', price: '$ 79.95' },
+ { text: 'Blue Line Sneakers', price: '$ 79.95' },
],
name: 'Hugh Manbeing',
- userLocation: {
- state: 'CO',
- zip: '80202',
- },
- },
- integrations: {
- All: true,
+ userLocation: { state: 'CO', zip: '80202' },
},
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -114,9 +82,7 @@ export const data = [
body: {
JSON: {
occured: '2019-10-14T09:03:17.562Z',
- user: {
- named_user_id: 'testuserId1',
- },
+ user: { named_user_id: 'testuserId1' },
body: {
name: 'product_clicked',
properties: {
@@ -124,24 +90,12 @@ export const data = [
brand: 'Victory Sneakers',
colors: ['red', 'blue'],
items: [
- {
- text: 'New Line Sneakers',
- price: '$ 79.95',
- },
- {
- text: 'Old Line Sneakers',
- price: '$ 79.95',
- },
- {
- text: 'Blue Line Sneakers',
- price: '$ 79.95',
- },
+ { text: 'New Line Sneakers', price: '$ 79.95' },
+ { text: 'Old Line Sneakers', price: '$ 79.95' },
+ { text: 'Blue Line Sneakers', price: '$ 79.95' },
],
name: 'Hugh Manbeing',
- userLocation: {
- state: 'CO',
- zip: '80202',
- },
+ userLocation: { state: 'CO', zip: '80202' },
},
},
},
@@ -151,19 +105,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- appKey: 'O2YARRI15I',
- dataCenter: false,
- },
+ Config: { apiKey: 'dummyApiKey', appKey: 'O2YARRI15I', dataCenter: false },
},
},
],
@@ -183,15 +129,9 @@ export const data = [
input: [
{
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- appKey: 'O2YARRI15I',
- dataCenter: false,
- },
- },
- metadata: {
- jobId: 2,
+ Config: { apiKey: 'dummyApiKey', appKey: 'O2YARRI15I', dataCenter: false },
},
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: '507f191e810c19729de860ea',
channel: 'browser',
@@ -200,9 +140,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '022bb90c-bbac-11e4-8dfc-aa07a5b093db',
receivedAt: '2015-02-23T22:28:55.387Z',
sentAt: '2015-02-23T22:28:55.111Z',
@@ -255,15 +193,9 @@ export const data = [
params: {},
body: {
JSON: {
- audience: {
- named_user_id: '97980cfea0067',
- },
- add: {
- rudderstack_integration: ['firstname', 'favcolor'],
- },
- remove: {
- rudderstack_integration: ['lastname'],
- },
+ audience: { named_user_id: '97980cfea0067' },
+ add: { rudderstack_integration: ['firstname', 'favcolor'] },
+ remove: { rudderstack_integration: ['lastname'] },
},
JSON_ARRAY: {},
XML: {},
@@ -291,12 +223,7 @@ export const data = [
value: 'Peter Gibbons',
timestamp: '2015-02-23T22:28:55Z',
},
- {
- action: 'set',
- key: 'age',
- value: 34,
- timestamp: '2015-02-23T22:28:55Z',
- },
+ { action: 'set', key: 'age', value: 34, timestamp: '2015-02-23T22:28:55Z' },
{
action: 'set',
key: 'email',
@@ -354,19 +281,11 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- appKey: 'O2YARRI15I',
- dataCenter: false,
- },
+ Config: { apiKey: 'dummyApiKey', appKey: 'O2YARRI15I', dataCenter: false },
},
},
],
@@ -385,15 +304,8 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- dataCenter: false,
- },
- },
- metadata: {
- jobId: 3,
- },
+ destination: { Config: { apiKey: 'dummyApiKey', dataCenter: false } },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
anonymousId: '507f191e810c19729de860ea',
channel: 'browser',
@@ -402,9 +314,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '022bb90c-bbac-11e4-8dfc-aa07a5b093db',
receivedAt: '2015-02-23T22:28:55.387Z',
sentAt: '2015-02-23T22:28:55.111Z',
@@ -457,15 +367,9 @@ export const data = [
params: {},
body: {
JSON: {
- audience: {
- named_user_id: '97980cfea0067',
- },
- add: {
- rudderstack_integration_group: ['firstname', 'favcolor'],
- },
- remove: {
- rudderstack_integration_group: ['lastname'],
- },
+ audience: { named_user_id: '97980cfea0067' },
+ add: { rudderstack_integration_group: ['firstname', 'favcolor'] },
+ remove: { rudderstack_integration_group: ['lastname'] },
},
JSON_ARRAY: {},
XML: {},
@@ -493,12 +397,7 @@ export const data = [
value: 'Peter Gibbons',
timestamp: '2015-02-23T22:28:55Z',
},
- {
- action: 'set',
- key: 'age',
- value: 34,
- timestamp: '2015-02-23T22:28:55Z',
- },
+ { action: 'set', key: 'age', value: 34, timestamp: '2015-02-23T22:28:55Z' },
{
action: 'set',
key: 'email',
@@ -556,19 +455,10 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- dataCenter: false,
- },
- },
+ destination: { Config: { apiKey: 'dummyApiKey', dataCenter: false } },
},
],
},
diff --git a/test/integrations/destinations/algolia/processor/data.ts b/test/integrations/destinations/algolia/processor/data.ts
index 0cbdd8b31b2..7c37c9642ae 100644
--- a/test/integrations/destinations/algolia/processor/data.ts
+++ b/test/integrations/destinations/algolia/processor/data.ts
@@ -380,7 +380,7 @@ export const data = [
body: [
{
error:
- 'Either filters or objectIds is required.: Workflow: procWorkflow, Step: validateDestPayload, ChildStep: undefined, OriginalError: Either filters or objectIds is required.',
+ 'Either filters or objectIds is required and must be non empty.: Workflow: procWorkflow, Step: validateDestPayload, ChildStep: undefined, OriginalError: Either filters or objectIds is required and must be non empty.',
statTags: {
destType: 'ALGOLIA',
errorCategory: 'dataValidation',
@@ -1417,4 +1417,214 @@ export const data = [
},
},
},
+ {
+ name: 'algolia',
+ description: 'Eventype must be one of click, conversion pr view',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testone@gmail.com',
+ firstName: 'test',
+ lastName: 'one',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/ometria',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/ometria',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ event: 'product clicked',
+ userId: 'testuserId1',
+ properties: {
+ index: 'products',
+ filters: ['field1:hello', 'val1:val2'],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ applicationId: 'O2YARRI15I',
+ eventTypeSettings: [
+ {
+ from: 'product clicked',
+ to: 'abcd',
+ },
+ ],
+ },
+ },
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'eventType can be either click, view or conversion: Workflow: procWorkflow, Step: preparePayload, ChildStep: undefined, OriginalError: eventType can be either click, view or conversion',
+ statTags: {
+ destType: 'ALGOLIA',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ statusCode: 400,
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'algolia',
+ description: 'filters or objectIds must be non empty',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'product clicked',
+ sentAt: '2024-02-25T17:55:36.882Z',
+ userId: '12345',
+ channel: 'web',
+ properties: {
+ index: 'products',
+ list_id: 'search_results_page',
+ queryId: '8e737',
+ products: [],
+ eventName: 'productListView',
+ list_name: 'Search Results Page',
+ objectIds: [],
+ positions: [],
+ userToken: 'e494',
+ additional_attributes: {},
+ },
+ receivedAt: '2024-02-25T17:55:38.089Z',
+ request_ip: '107.130.37.100',
+ anonymousId: '68e9f4b8-fd4d-4c56-8ca4-858de2fd1df8',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2024-02-25T17:55:36.880Z',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ applicationId: 'O2YARRI15I',
+ eventTypeSettings: [
+ {
+ from: 'product clicked',
+ to: 'cLick ',
+ },
+ ],
+ },
+ },
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Either filters or objectIds is required and must be non empty.: Workflow: procWorkflow, Step: validateDestPayload, ChildStep: undefined, OriginalError: Either filters or objectIds is required and must be non empty.',
+ statTags: {
+ destType: 'ALGOLIA',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ statusCode: 400,
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/algolia/router/data.ts b/test/integrations/destinations/algolia/router/data.ts
index aaf3e224e32..65c74342dc8 100644
--- a/test/integrations/destinations/algolia/router/data.ts
+++ b/test/integrations/destinations/algolia/router/data.ts
@@ -17,10 +17,7 @@ export const data = [
userId: 'test-user-id1',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -56,10 +53,7 @@ export const data = [
custom_date1: '2019-10-14T11:15:53.296Z',
custom_flavor: 'chocolate',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.2.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.1' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
@@ -71,27 +65,17 @@ export const data = [
index: 'products',
queryId: '43b15df305339e827f0ac0bdc5ebcaa7',
products: [
- {
- objectId: 'ecommerce-sample-data-919',
- position: 7,
- },
- {
- objectId: '9780439784542',
- position: 8,
- },
+ { objectId: 'ecommerce-sample-data-919', position: 7 },
+ { objectId: '9780439784542', position: 8 },
],
},
receivedAt: '2021-10-25T15:10:08.889+05:30',
request_ip: '[::1]',
anonymousId: '7138f7d9-5dd2-4337-805d-ca17be59dc8e',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-10-25T09:40:08.879Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
ID: '1zzHtStW2ZPlullmz6L7DGnmk9V',
Name: 'algolia-dev',
@@ -100,9 +84,7 @@ export const data = [
Name: 'ALGOLIA',
DisplayName: 'Algolia',
Config: {
- destConfig: {
- defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'],
- },
+ destConfig: { defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'] },
excludeKeys: [],
includeKeys: [],
saveDestinationResponse: true,
@@ -128,14 +110,8 @@ export const data = [
apiKey: 'apiKey',
applicationId: 'appId',
eventTypeSettings: [
- {
- from: 'product clicked',
- to: 'click',
- },
- {
- from: 'product list viewed',
- to: 'view',
- },
+ { from: 'product clicked', to: 'click' },
+ { from: 'product list viewed', to: 'view' },
],
},
Enabled: true,
@@ -151,10 +127,7 @@ export const data = [
userId: 'test-user-id1',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -190,10 +163,7 @@ export const data = [
custom_date1: '2019-10-14T11:15:53.296Z',
custom_flavor: 'chocolate',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.2.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.1' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
@@ -201,21 +171,14 @@ export const data = [
rudderId: 'e3e907f1-f79a-444b-b91d-da47488f8273',
messageId: '7b58e140-b66b-4e88-a5ec-bd6811fc3836',
timestamp: '2021-10-25T15:10:08.943+05:30',
- properties: {
- index: 'products',
- filters: ['field1:hello', 'val1:val2'],
- },
+ properties: { index: 'products', filters: ['field1:hello', 'val1:val2'] },
receivedAt: '2021-10-25T15:10:08.943+05:30',
request_ip: '[::1]',
anonymousId: '7138f7d9-5dd2-4337-805d-ca17be59dc8e',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-10-25T09:40:08.886Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
ID: '1zzHtStW2ZPlullmz6L7DGnmk9V',
Name: 'algolia-dev',
@@ -224,9 +187,7 @@ export const data = [
Name: 'ALGOLIA',
DisplayName: 'Algolia',
Config: {
- destConfig: {
- defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'],
- },
+ destConfig: { defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'] },
excludeKeys: [],
includeKeys: [],
saveDestinationResponse: true,
@@ -252,14 +213,8 @@ export const data = [
apiKey: 'apiKey-2',
applicationId: 'appId-2',
eventTypeSettings: [
- {
- from: 'product clicked',
- to: 'click',
- },
- {
- from: 'product list viewed',
- to: 'view',
- },
+ { from: 'product clicked', to: 'click' },
+ { from: 'product list viewed', to: 'view' },
],
},
Enabled: true,
@@ -277,26 +232,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'testone@gmail.com',
- firstName: 'test',
- lastName: 'one',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'testone@gmail.com', firstName: 'test', lastName: 'one' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/destinations/ometria',
referrer: '',
@@ -315,27 +258,16 @@ export const data = [
anonymousId: '123456',
event: 'product clicked',
userId: 'testuserId1',
- properties: {
- filters: ['field1:hello', 'val1:val2'],
- },
- integrations: {
- All: true,
- },
+ properties: { filters: ['field1:hello', 'val1:val2'] },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
apiKey: 'dummyApiKey',
applicationId: 'O2YARRI15I',
- eventTypeSettings: [
- {
- from: 'product clicked',
- to: 'cLick ',
- },
- ],
+ eventTypeSettings: [{ from: 'product clicked', to: 'cLick ' }],
},
},
},
@@ -356,10 +288,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://insights.algolia.io/1/events',
- headers: {
- 'X-Algolia-Application-Id': 'appId',
- 'X-Algolia-API-Key': 'apiKey',
- },
+ headers: { 'X-Algolia-Application-Id': 'appId', 'X-Algolia-API-Key': 'apiKey' },
params: {},
body: {
JSON: {
@@ -388,12 +317,8 @@ export const data = [
files: {},
},
metadata: [
- {
- jobId: 1,
- },
- {
- jobId: 2,
- },
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -405,9 +330,7 @@ export const data = [
Name: 'ALGOLIA',
DisplayName: 'Algolia',
Config: {
- destConfig: {
- defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'],
- },
+ destConfig: { defaultConfig: ['apiKey', 'applicationId', 'eventTypeSettings'] },
excludeKeys: [],
includeKeys: [],
saveDestinationResponse: true,
@@ -433,14 +356,8 @@ export const data = [
apiKey: 'apiKey',
applicationId: 'appId',
eventTypeSettings: [
- {
- from: 'product clicked',
- to: 'click',
- },
- {
- from: 'product list viewed',
- to: 'view',
- },
+ { from: 'product clicked', to: 'click' },
+ { from: 'product list viewed', to: 'view' },
],
},
Enabled: true,
@@ -454,20 +371,11 @@ export const data = [
Config: {
apiKey: 'dummyApiKey',
applicationId: 'O2YARRI15I',
- eventTypeSettings: [
- {
- from: 'product clicked',
- to: 'cLick ',
- },
- ],
+ eventTypeSettings: [{ from: 'product clicked', to: 'cLick ' }],
},
},
error: 'Missing required value from "properties.index"',
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statTags: {
destType: 'ALGOLIA',
errorCategory: 'dataValidation',
@@ -501,10 +409,7 @@ export const data = [
userId: 'anonymous',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
version: '2.35.0',
@@ -529,14 +434,8 @@ export const data = [
innerWidth: 2514,
innerHeight: 567,
},
- traits: {
- loggedIn: false,
- customerId: 'anonymous',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '2.35.0',
- },
+ traits: { loggedIn: false, customerId: 'anonymous' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.35.0' },
campaign: {},
sessionId: 1687204412379,
userAgent:
@@ -2093,9 +1992,7 @@ export const data = [
receivedAt: '2023-06-19T22:22:32.431Z',
request_ip: '104.205.211.60',
anonymousId: '7b701174-5998-480e-a4df-b322d0ec9d1c',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2023-06-19T19:54:41.686Z',
},
destination: {
@@ -2104,35 +2001,17 @@ export const data = [
apiKey: 'apiKey',
applicationId: 'appId',
eventTypeSettings: [
- {
- from: 'productClicked',
- to: 'click',
- },
- {
- from: 'product list filtered',
- to: 'click',
- },
- {
- from: 'Product List Viewed',
- to: 'view',
- },
- {
- from: 'Order Completed',
- to: 'conversion',
- },
- {
- from: 'Product Added',
- to: 'click',
- },
+ { from: 'productClicked', to: 'click' },
+ { from: 'product list filtered', to: 'click' },
+ { from: 'Product List Viewed', to: 'view' },
+ { from: 'Order Completed', to: 'conversion' },
+ { from: 'Product Added', to: 'click' },
],
oneTrustCookieCategories: [],
eventDelivery: false,
eventDeliveryTS: 1687213909459,
},
- liveEventsConfig: {
- eventDelivery: false,
- eventDeliveryTS: 1687213909459,
- },
+ liveEventsConfig: { eventDelivery: false, eventDeliveryTS: 1687213909459 },
id: 'destId',
workspaceId: 'wspId',
DestinationDefinition: {
@@ -2192,6 +2071,7 @@ export const data = [
workspaceId: 'wspId',
destinationId: 'destId',
jobId: 12,
+ userId: 'u1',
},
},
],
@@ -2247,10 +2127,7 @@ export const data = [
},
endpoint: 'https://insights.algolia.io/1/events',
files: {},
- headers: {
- 'X-Algolia-API-Key': 'apiKey',
- 'X-Algolia-Application-Id': 'appId',
- },
+ headers: { 'X-Algolia-API-Key': 'apiKey', 'X-Algolia-Application-Id': 'appId' },
method: 'POST',
params: {},
type: 'REST',
@@ -2263,26 +2140,11 @@ export const data = [
eventDelivery: false,
eventDeliveryTS: 1687213909459,
eventTypeSettings: [
- {
- from: 'productClicked',
- to: 'click',
- },
- {
- from: 'product list filtered',
- to: 'click',
- },
- {
- from: 'Product List Viewed',
- to: 'view',
- },
- {
- from: 'Order Completed',
- to: 'conversion',
- },
- {
- from: 'Product Added',
- to: 'click',
- },
+ { from: 'productClicked', to: 'click' },
+ { from: 'product list filtered', to: 'click' },
+ { from: 'Product List Viewed', to: 'view' },
+ { from: 'Order Completed', to: 'conversion' },
+ { from: 'Product Added', to: 'click' },
],
oneTrustCookieCategories: [],
},
@@ -2333,10 +2195,7 @@ export const data = [
id: 'destId',
isConnectionEnabled: true,
isProcessorEnabled: true,
- liveEventsConfig: {
- eventDelivery: false,
- eventDeliveryTS: 1687213909459,
- },
+ liveEventsConfig: { eventDelivery: false, eventDeliveryTS: 1687213909459 },
name: 'my_algolia',
revisionId: 'revisionId1',
secretConfig: {},
@@ -2351,6 +2210,7 @@ export const data = [
workspaceId: 'wspId',
destinationId: 'destId',
jobId: 12,
+ userId: 'u1',
},
],
statusCode: 200,
diff --git a/test/integrations/destinations/am/batch/data.ts b/test/integrations/destinations/am/batch/data.ts
new file mode 100644
index 00000000000..91a17606a90
--- /dev/null
+++ b/test/integrations/destinations/am/batch/data.ts
@@ -0,0 +1,3341 @@
+export const data = [
+ {
+ name: 'am',
+ description: 'Test 0: ERROR - Both userId and deviceId cannot be undefined',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.eu.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'EU',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batched: false,
+ error: 'Both userId and deviceId cannot be undefined',
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ statusCode: 400,
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'EU',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 1',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.eu.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'EU',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 5,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: {
+ jobId: 6,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: {
+ jobId: 7,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.eu.amplitude.com/2/httpapi',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'EU',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: [
+ {
+ jobId: 6,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: [
+ {
+ jobId: 7,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/batch',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ {
+ jobId: 5,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 2',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 5,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: {
+ jobId: 6,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: {
+ jobId: 7,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: [
+ {
+ jobId: 6,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: [
+ {
+ jobId: 7,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/batch',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ {
+ jobId: 5,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 3',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: 'dd4c4493-a3ff-49c9-9071-6cb72e37cd55',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ api_key: 'afasf',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 12,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:29.633+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '69283c05-bbe9-4aba-bb98-3f065d39cf54',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ api_key: 'afasf',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 13,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:29.914+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '39f7a1fa-ff79-4fd1-a329-d637f018de7e',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ api_key: 'afasf',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 14,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.166+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '4314aa01-46a3-4f45-b67d-debe4bc01717',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ api_key: 'afasf',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 15,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.424+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '4d958d40-2762-44aa-bf83-d47f881bc615',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ api_key: 'afasf',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 16,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.668+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: 'dd4c4493-a3ff-49c9-9071-6cb72e37cd55',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '69283c05-bbe9-4aba-bb98-3f065d39cf54',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '39f7a1fa-ff79-4fd1-a329-d637f018de7e',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '4314aa01-46a3-4f45-b67d-debe4bc01717',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ {
+ ip: '[::1]',
+ time: 1565586510909,
+ carrier: 'Android',
+ app_name: 'RudderAndroidClient',
+ language: 'en-US',
+ device_id: 'anon_id',
+ library: 'rudderstack',
+ insert_id: '4d958d40-2762-44aa-bf83-d47f881bc615',
+ event_type: 'Demo Track',
+ session_id: -1,
+ app_version: '1.0',
+ device_model: 'Android SDK built for x86',
+ event_properties: {
+ label: 'Demo Label',
+ value: 5,
+ category: 'Demo Category',
+ },
+ device_manufacturer: 'Google',
+ },
+ ],
+ api_key: 'afasf',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'anon_id',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/batch',
+ },
+ metadata: [
+ {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 12,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:29.633+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 13,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:29.914+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 14,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.166+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 15,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.424+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ {
+ userId: '90ca6da0-292e-4e79-9880-f8009e0ae4a3',
+ jobId: 16,
+ sourceId: '1fMCVYZboDlYlauh4GFsEo2JU77',
+ destinationId: '1gXSYmSd7vkfFfJ4vtMCL0i43Lb',
+ attemptNum: 0,
+ receivedAt: '2020-10-20T23:47:30.668+05:30',
+ createdAt: '2020-10-20T18:17:32.465Z',
+ },
+ ],
+ destination: {
+ ID: '1iuPwfigf4Fk5F5OBF2T3EVTGlY',
+ Name: 'braze dev',
+ DestinationDefinition: {
+ ID: '1XQoHKJnI6Uf67wN20RlvAQSUB9',
+ Name: 'BRAZE',
+ DisplayName: 'Braze',
+ Config: {
+ destConfig: {
+ android: ['useNativeSDK'],
+ defaultConfig: ['appKey', 'dataCenter', 'restApiKey'],
+ ios: ['useNativeSDK'],
+ web: ['useNativeSDK'],
+ },
+ excludeKeys: [],
+ includeKeys: ['appKey', 'dataCenter'],
+ secretKeys: ['restApiKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ },
+ Config: {
+ appKey: 'asdf',
+ dataCenter: 'asdfasdf',
+ residencyServer: 'standard',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: false,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 4',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 5,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: {
+ jobId: 6,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: {
+ jobId: 7,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: [
+ {
+ jobId: 6,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: [
+ {
+ jobId: 7,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/batch',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ {
+ jobId: 5,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 5',
+ feature: 'batch',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ destType: 'am',
+ input: [
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: {
+ jobId: 5,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: {
+ jobId: 6,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ message: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: {
+ jobId: 7,
+ userId: 'u1',
+ },
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '0.0.0.0',
+ time: 1603132665557,
+ os_name: '',
+ user_id: '123',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ name: 'some campaign',
+ plan: 'Open source',
+ term: 'keyword',
+ test: 'other value',
+ email: 'test@rudderstack.com',
+ logins: 5,
+ medium: 'medium',
+ source: 'google',
+ content: 'some content',
+ category: 'SampleIdentify',
+ createdAt: 1599264000,
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ options: {
+ min_id_length: 1,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ identification: [
+ '{"group_type":"Company","group_value":"Comapny-ABC","group_properties":{"KEY_2":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"KEY_3":{"CHILD_KEY_102":"value_103","CHILD_KEY_92":"value_95"},"name_trait":"Company","value_trait":"Comapny-ABC"}}',
+ ],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ },
+ metadata: [
+ {
+ jobId: 6,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ mapping: ['{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3"}'],
+ },
+ JSON: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {},
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ },
+ metadata: [
+ {
+ jobId: 7,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ip: '[::1]',
+ time: 1603132712347,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132719505,
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: 'Simple track call',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ event_properties: {
+ key: 'val',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ {
+ ip: '[::1]',
+ time: 1603132726413,
+ groups: {
+ Company: 'Comapny-ABC',
+ },
+ os_name: '',
+ user_id: 'sampleusrRudder3',
+ app_name: 'RudderLabs JavaScript SDK',
+ language: 'en-US',
+ device_id: 'my-anonymous-id-new',
+ library: 'rudderstack',
+ event_type: '$identify',
+ os_version: '',
+ session_id: -1,
+ app_version: '1.1.5',
+ user_properties: {
+ Company: 'Comapny-ABC',
+ },
+ },
+ ],
+ api_key: '4c7ed7573eb73517ee4c26ed4bde9a85',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ userId: 'my-anonymous-id-new',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api2.amplitude.com/batch',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ {
+ jobId: 5,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ ID: 'a',
+ url: 'a',
+ Config: {
+ residencyServer: 'standard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/am/processor/data.ts b/test/integrations/destinations/am/processor/data.ts
new file mode 100644
index 00000000000..b645fb5ac7d
--- /dev/null
+++ b/test/integrations/destinations/am/processor/data.ts
@@ -0,0 +1,11383 @@
+export const data = [
+ {
+ name: 'am',
+ description: 'Test 0: ERROR - Event not present. Please send event field',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ revenue_type: 'Purchased',
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event not present. Please send event field',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 1: ERROR - message type not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'UNSUPPORTED-TYPE',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {},
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {},
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ groupTypeTrait: 'email',
+ apiKey: 'abcde',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'message type not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 2: ERROR - No API Key is Found. Please Configure API key from dashbaord',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {},
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {},
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'No API Key is Found. Please Configure API key from dashbaord',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ revenue_type: 'Purchased',
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ quantity: 1,
+ revenue: 48,
+ revenueType: 'Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue_type: 'Purchased',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ price: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 48,
+ quantity: 1,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ integrations: {
+ Amplitude: { fieldsToUnset: ['email'] },
+ All: true,
+ },
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToIncrement: [
+ {
+ traits: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ $unset: {
+ email: '-',
+ },
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ Amplitude: { fieldsToUnset: ['testObj.unsetField1'] },
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ $unset: {
+ 'testObj.unsetField1': '-',
+ },
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '123456',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ ip: '0.0.0.0',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'Viewed ApplicationLoaded Page',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: false,
+ Amplitude: {
+ groups: {
+ Company: 'ABC',
+ },
+ },
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'Viewed ApplicationLoaded Page',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ groups: {
+ Company: 'ABC',
+ },
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event',
+ properties: {
+ user_actual_role: 'system_admin',
+ user_actual_id: 12345,
+ user_time_spent: 50000,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ event_properties: {
+ user_actual_role: 'system_admin',
+ user_actual_id: 12345,
+ user_time_spent: 50000,
+ },
+ event_type: 'test track event',
+ user_id: '12345',
+ time: 1571051718300,
+ session_id: -1,
+ ip: '0.0.0.0',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ address: {
+ city: 'Sealdah',
+ country: 'India',
+ postalCode: 700014,
+ state: 'WB',
+ street: '',
+ },
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '123456',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ userId: 'ubcdfghi0001',
+ anonymousId: '123456',
+ session_id: '1598597129',
+ context: {
+ traits: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '123456',
+ user_properties: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ event_type: '$identify',
+ time: 0,
+ user_id: 'ubcdfghi0001',
+ session_id: 1598597129,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ userId: 'ubcdfghi0001',
+ anonymousId: '123456',
+ session_id: 'user:1598597129',
+ context: {
+ traits: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '123456',
+ user_properties: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ event_type: '$identify',
+ time: 0,
+ user_id: 'ubcdfghi0001',
+ session_id: 1598597129,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ userId: 'ubcdfghi0001',
+ anonymousId: '123456',
+ session_id: 1598597129,
+ context: {
+ traits: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '123456',
+ user_properties: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ event_type: '$identify',
+ time: 0,
+ user_id: 'ubcdfghi0001',
+ session_id: 1598597129,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ userId: 'ubcdfghi0001',
+ anonymousId: '123456',
+ context: {
+ traits: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '123456',
+ user_properties: {
+ device_id: 'adddd0001',
+ device_os: 'ios',
+ device_make: 'apple iphone',
+ app_version: 'v1.0',
+ timestamp: '2020-08-28 09:00:00',
+ },
+ event_type: '$identify',
+ time: 0,
+ user_id: 'ubcdfghi0001',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'sampleusrRudder3',
+ integrations: {
+ All: true,
+ Amplitude: {
+ groups: {
+ group_type: 'Company',
+ group_value: 'ABC',
+ },
+ },
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: 'ABC',
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '85.0.4183.121',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'my-anonymous-id-new',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.5',
+ language: 'en-US',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ utm_source: 'google',
+ utm_medium: 'medium',
+ utm_term: 'keyword',
+ utm_content: 'some content',
+ utm_name: 'some campaign',
+ utm_test: 'other value',
+ Company: 'ABC',
+ },
+ event_type: '$identify',
+ groups: {
+ Company: 'ABC',
+ },
+ time: 1603180498983,
+ user_id: 'sampleusrRudder3',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ identification: ['{"group_type":"Company","group_value":"ABC"}'],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'sampleusrRudder3',
+ integrations: {
+ All: true,
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: 'ABC',
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'name_trait',
+ groupValueTrait: 'value_trait',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '85.0.4183.121',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'my-anonymous-id-new',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.5',
+ language: 'en-US',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ utm_source: 'google',
+ utm_medium: 'medium',
+ utm_term: 'keyword',
+ utm_content: 'some content',
+ utm_name: 'some campaign',
+ utm_test: 'other value',
+ Company: 'ABC',
+ },
+ event_type: '$identify',
+ groups: {
+ Company: 'ABC',
+ },
+ time: 1603180498983,
+ user_id: 'sampleusrRudder3',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ identification: [
+ '{"group_type":"Company","group_value":"ABC","group_properties":{"KEY_3":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"KEY_2":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"name_trait":"Company","value_trait":"ABC"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 18: ERROR - Group call parameters are not valid',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'sampleusrRudder3',
+ integrations: {
+ All: true,
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: ['ABC'],
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'name_trait',
+ groupValueTrait: 'value_trait',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Group call parameters are not valid',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'alias',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ integrations: {
+ All: true,
+ },
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ mapping: [
+ '{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3","user_properties":{"initial_referrer":"https://docs.rudderstack.com","initial_referring_domain":"docs.rudderstack.com","utm_source":"google","utm_medium":"medium","utm_term":"keyword","utm_content":"some content","utm_name":"some campaign","utm_test":"other value"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'alias',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ integrations: {
+ All: false,
+ Amplitude: {
+ unmap: 'sampleusrRudder3',
+ },
+ },
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ mapping: [
+ '{"user_id":"sampleusrRudder3","user_properties":{"initial_referrer":"https://docs.rudderstack.com","initial_referring_domain":"docs.rudderstack.com","utm_source":"google","utm_medium":"medium","utm_term":"keyword","utm_content":"some content","utm_name":"some campaign","utm_test":"other value"},"unmap":true}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'Android',
+ cellular: true,
+ bluetooth: false,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '9',
+ device_id: '0572f78fa49c648e',
+ carrier: 'Android',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ name: 'generic_x86_arm',
+ type: 'Android',
+ model: 'AOSP on IA Emulator',
+ manufacturer: 'Google',
+ adTrackingEnabled: false,
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'Android',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '9',
+ device_model: 'AOSP on IA Emulator',
+ device_manufacturer: 'Google',
+ platform: 'Android',
+ device_id: '0572f78fa49c648e',
+ carrier: 'Android',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Google',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 23',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ name: 'generic_x86_arm',
+ type: 'Android',
+ model: 'AOSP on IA Emulator',
+ manufacturer: 'Google',
+ adTrackingEnabled: true,
+ advertisingId: '44c97318-9040-4361-8bc7-4eb30f665ca8',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'Android',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '9',
+ device_model: 'AOSP on IA Emulator',
+ device_manufacturer: 'Google',
+ platform: 'Android',
+ device_id: '0572f78fa49c648e',
+ carrier: 'Android',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Google',
+ adid: '44c97318-9040-4361-8bc7-4eb30f665ca8',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 24',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ name: 'iphone_xr_64',
+ type: 'iOS',
+ model: 'iPhone XR',
+ manufacturer: 'Apple',
+ adTrackingEnabled: false,
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'AT&T',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'iOS',
+ os_version: '14.4.1',
+ device_model: 'iPhone XR',
+ device_manufacturer: 'Apple',
+ platform: 'iOS',
+ device_id: '0572f78fa49c648e',
+ carrier: 'AT&T',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Apple',
+ idfv: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 25',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ name: 'iphone_xr_64',
+ type: 'iOS',
+ model: 'iPhone XR',
+ manufacturer: 'Apple',
+ adTrackingEnabled: true,
+ advertisingId: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'AT&T',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'iOS',
+ os_version: '14.4.1',
+ device_model: 'iPhone XR',
+ device_manufacturer: 'Apple',
+ platform: 'iOS',
+ device_id: '0572f78fa49c648e',
+ carrier: 'AT&T',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Apple',
+ idfa: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ idfv: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 26',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen View',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen View',
+ },
+ user_properties: {},
+ event_type: 'Viewed Screen View Screen',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 27',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-1',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 28',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 29',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-1',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ },
+ productId: '507f1f77bcf86cd799439011',
+ revenueType: 'Purchased',
+ price: 19,
+ quantity: 1,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ category: 'Games',
+ },
+ productId: '505bd76785ebb509fc183733',
+ revenueType: 'Purchased',
+ price: 3,
+ quantity: 2,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 30',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-1',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ },
+ productId: '507f1f77bcf86cd799439011',
+ revenueType: 'Purchased',
+ price: 19,
+ quantity: 1,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ event_type: 'Product Purchased',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9-2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ category: 'Games',
+ },
+ productId: '505bd76785ebb509fc183733',
+ revenueType: 'Purchased',
+ price: 3,
+ quantity: 2,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 31',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 32',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 33',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 34',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ insert_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 35',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ traits: {
+ city: 'Durgapur',
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToIncrement: [
+ {
+ traits: 'age',
+ },
+ {
+ traits: 'friends',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'Manashi',
+ phone: '990099009900',
+ subjects: 5,
+ experience: 2,
+ $add: {
+ age: 12,
+ friends: 3,
+ },
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 36',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://localhost:1111/RudderAmplitude.html',
+ path: '/RudderAmplitude.html',
+ title: 'Amplitude Testing By Rudder',
+ search: '',
+ referrer: 'http://localhost:1111/',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ traits: {
+ city: 'Durgapur',
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToSetOnce: [
+ {
+ traits: 'subjects',
+ },
+ {
+ traits: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ experience: 2,
+ $setOnce: {
+ subjects: 5,
+ },
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 37',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://localhost:1111/RudderAmplitude.html',
+ path: '/RudderAmplitude.html',
+ title: 'Amplitude Testing By Rudder',
+ search: '',
+ referrer: 'http://localhost:1111/',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ traits: {
+ city: 'Durgapur',
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToAppend: [
+ {
+ traits: 'name',
+ },
+ {
+ traits: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ $append: {
+ name: 'Manashi',
+ },
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 38',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://localhost:1111/RudderAmplitude.html',
+ path: '/RudderAmplitude.html',
+ title: 'Amplitude Testing By Rudder',
+ search: '',
+ referrer: 'http://localhost:1111/',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ traits: {
+ city: 'Durgapur',
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToPrepend: [
+ {
+ traits: 'experience',
+ },
+ {
+ traits: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ $prepend: {
+ experience: 2,
+ },
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 39',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://localhost:1111/RudderAmplitude.html',
+ path: '/RudderAmplitude.html',
+ title: 'Amplitude Testing By Rudder',
+ search: '',
+ referrer: 'http://localhost:1111/',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ traits: {
+ city: 'Durgapur',
+ name: 'Manashi',
+ phone: '990099009900',
+ friends: 3,
+ age: 12,
+ subjects: 5,
+ experience: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToIncrement: [
+ {
+ traits: 'age',
+ },
+ {
+ traits: 'friends',
+ },
+ ],
+ traitsToSetOnce: [
+ {
+ traits: 'subjects',
+ },
+ {
+ traits: '',
+ },
+ ],
+ traitsToAppend: [
+ {
+ traits: 'name',
+ },
+ {
+ traits: '',
+ },
+ ],
+ traitsToPrepend: [
+ {
+ traits: 'experience',
+ },
+ {
+ traits: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ phone: '990099009900',
+ $add: {
+ age: 12,
+ friends: 3,
+ },
+ $setOnce: {
+ subjects: 5,
+ },
+ $append: {
+ name: 'Manashi',
+ },
+ $prepend: {
+ experience: 2,
+ },
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 40',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ userId: 'userID123',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ region: 'California',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: false,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ user_id: 'userID123',
+ time: 1597383030118,
+ session_id: -1,
+ region: 'California',
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ event_type: 'Product Purchased',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2-1',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ },
+ user_id: 'userID123',
+ productId: '507f1f77bcf86cd799439011',
+ revenueType: 'Purchased',
+ price: 19,
+ quantity: 1,
+ time: 1597383030118,
+ session_id: -1,
+ region: 'California',
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ event_type: 'Product Purchased',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2-2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ category: 'Games',
+ },
+ user_id: 'userID123',
+ productId: '505bd76785ebb509fc183733',
+ revenueType: 'Purchased',
+ price: 3,
+ quantity: 2,
+ time: 1597383030118,
+ session_id: -1,
+ region: 'California',
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 41',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ userId: 'userID123',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ user_id: 'userID123',
+ revenueType: 'Purchased',
+ price: 25,
+ quantity: 2,
+ revenue: 48,
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 42',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'App_Opened',
+ sentAt: '2021-11-17T19:13:52.106Z',
+ userId: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-11-17T19:13:51.143Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ event_type: 'App_Opened',
+ user_id: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ device_brand: 'samsung',
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 43',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2020-11-20T06:18:22.342Z',
+ userId: 'User_111',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.8',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2.5,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.8',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
+ },
+ rudderId: '7e00bf3d-5357-4448-886d-f8fc8abf932d',
+ messageId: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ anonymousId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-11-20T06:18:22.342Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ traitsToIncrement: [
+ {
+ traits: 'age',
+ },
+ {
+ traits: 'friends',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '86.0.4240.198',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.8',
+ language: 'en-GB',
+ insert_id: '6f08cc45-95c3-40c1-90f2-2f44a92947ef',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ event_type: '$identify',
+ time: 1605853102342,
+ user_id: 'User_111',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '2f8b0ba7-d76e-4b91-9577-d1b6ebd68946',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 44',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ userId: 'userID123',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 0,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ integrations: {
+ S3: false,
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 0,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ event_type: 'Order Completed',
+ user_id: 'userID123',
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ event_type: 'Product Purchased',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2-1',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ },
+ user_id: 'userID123',
+ productId: '507f1f77bcf86cd799439011',
+ revenueType: 'Purchased',
+ price: 19,
+ quantity: 1,
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ device_id: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ event_type: 'Product Purchased',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2-2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ category: 'Games',
+ },
+ user_id: 'userID123',
+ productId: '505bd76785ebb509fc183733',
+ revenueType: 'Purchased',
+ price: 3,
+ quantity: 2,
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 45',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ event: 'Home',
+ sentAt: '2021-12-09T14:55:17.074Z',
+ userId: '9e187bff-2867-11ec-82ac-02cdd434d6bf',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ region: 'California',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ rudderId: '004670a6-4559-4f2b-aa2a-f35cf81a9423',
+ messageId: '1639061715808-a934f1c2-7b55-4e78-bd4d-df209c30c8a1',
+ timestamp: '2021-12-09T14:55:15.914Z',
+ properties: {
+ name: 'Home',
+ externalID: '1637763064335-7225034711957140329',
+ },
+ receivedAt: '2021-12-09T14:55:17.180Z',
+ request_ip: '186.54.216.75',
+ anonymousId: '066a37dc92b16284',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-12-09T14:55:15.808Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ device_id: '066a37dc92b16284',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ platform: 'Android',
+ language: 'en-US',
+ event_properties: {
+ name: 'Home',
+ externalID: '1637763064335-7225034711957140329',
+ },
+ insert_id: '1639061715808-a934f1c2-7b55-4e78-bd4d-df209c30c8a1',
+ ip: '186.54.216.75',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_type: 'Viewed Home Screen',
+ user_id: '9e187bff-2867-11ec-82ac-02cdd434d6bf',
+ device_brand: 'samsung',
+ time: 1639061715914,
+ session_id: -1,
+ region: 'California',
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '066a37dc92b16284',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 46',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ event: 'Home',
+ sentAt: '2021-12-09T14:55:17.074Z',
+ userId: 'abcdef123456cf',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c79-6c3f-4b60-be84-97805a32aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ rudderId: '004670a6-4559-4f2b-aa1a-f12cf81a9423',
+ messageId: '1639061715808-a934f1c2-7b55-5e78-bd4d-df209c31d8a2',
+ timestamp: '2021-12-09T14:55:15.914Z',
+ properties: {
+ name: 'Home',
+ externalID: '1637763064336-7225034711957140329',
+ },
+ receivedAt: '2021-12-09T14:55:17.180Z',
+ request_ip: '186.54.216.75',
+ anonymousId: '066a37dc92b16284',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-12-09T14:55:15.808Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ device_id: '066a37dc92b16284',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ platform: 'Android',
+ language: 'en-US',
+ event_properties: {
+ name: 'Home',
+ externalID: '1637763064336-7225034711957140329',
+ },
+ insert_id: '1639061715808-a934f1c2-7b55-5e78-bd4d-df209c31d8a2',
+ ip: '186.54.216.75',
+ user_properties: {
+ anonymousId: '50be5c79-6c3f-4b60-be84-97805a32aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_type: 'Viewed Home Screen',
+ user_id: 'abcdef123456cf',
+ device_brand: 'samsung',
+ time: 1639061715914,
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '066a37dc92b16284',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 47',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ type: 'watchos',
+ manufacturer: 'Apple',
+ adTrackingEnabled: true,
+ advertisingId: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'AT&T',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_manufacturer: 'Apple',
+ platform: 'watchos',
+ device_id: '0572f78fa49c648e',
+ carrier: 'AT&T',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Apple',
+ idfa: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ idfv: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 48',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ type: 'ipados',
+ manufacturer: 'Apple',
+ adTrackingEnabled: true,
+ advertisingId: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'AT&T',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_manufacturer: 'Apple',
+ platform: 'ipados',
+ device_id: '0572f78fa49c648e',
+ carrier: 'AT&T',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Apple',
+ idfa: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ idfv: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 49',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '0572f78fa49c648e',
+ type: 'tvos',
+ manufacturer: 'Apple',
+ adTrackingEnabled: true,
+ advertisingId: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'AT&T',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_manufacturer: 'Apple',
+ platform: 'tvos',
+ device_id: '0572f78fa49c648e',
+ carrier: 'AT&T',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ device_brand: 'Apple',
+ idfa: '1606e649-c97e-4d5f-a2ef-b81dbc66741a',
+ idfv: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 50',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ device: {
+ brand: 'testBrand',
+ manufacturer: 'testManufacturer',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ mapDeviceBrand: true,
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ device_manufacturer: 'testManufacturer',
+ platform: 'Web',
+ device_brand: 'testBrand',
+ device_id: '123456',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ ip: '0.0.0.0',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 51',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Sample track event BEFORE IDENTIFY1**',
+ sentAt: '2020-09-17T15:07:13.171Z',
+ userId: '0572f78fa49c648e',
+ channel: 'mobile',
+ context: {
+ device: {
+ brand: 'testBrand',
+ manufacturer: 'testManufacturer',
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ app: {
+ name: 'AMTestProject',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1080,
+ height: 2088,
+ density: 440,
+ },
+ traits: {
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.4',
+ },
+ network: {
+ wifi: true,
+ carrier: 'Android',
+ cellular: true,
+ bluetooth: false,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ messageId: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ anonymousId: '0572f78fa49c648e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-17T15:07:03.515Z',
+ },
+ destination: {
+ Config: {
+ mapDeviceBrand: true,
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '9',
+ device_manufacturer: 'testManufacturer',
+ device_brand: 'testBrand',
+ device_id: '0572f78fa49c648e',
+ carrier: 'Android',
+ app_name: 'AMTestProject',
+ app_version: '1.0',
+ language: 'en-US',
+ insert_id: '1600355223510-93e866a7-dc74-4256-a5f4-a41f54532466',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ id: '0572f78fa49c648e',
+ userId: '0572f78fa49c648e',
+ address: {},
+ company: {},
+ anonymousId: '0572f78fa49c648e',
+ },
+ event_type: 'Sample track event BEFORE IDENTIFY1**',
+ user_id: '0572f78fa49c648e',
+ time: 1600355223515,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '0572f78fa49c648e',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 52',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen View',
+ channel: 'web',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ device: {
+ brand: 'testBrand',
+ manufacturer: 'testManufacturer',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ mapDeviceBrand: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_manufacturer: 'testManufacturer',
+ device_brand: 'testBrand',
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen View',
+ },
+ user_properties: {},
+ event_type: 'Viewed Screen View Screen',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 53',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ residencyServer: 'EU',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.eu.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 54',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'sampleusrRudder3',
+ integrations: {
+ All: true,
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: 'ABC',
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'name_trait',
+ groupValueTrait: 'value_trait',
+ residencyServer: 'EU',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.eu.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '85.0.4183.121',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'my-anonymous-id-new',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.5',
+ language: 'en-US',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ utm_source: 'google',
+ utm_medium: 'medium',
+ utm_term: 'keyword',
+ utm_content: 'some content',
+ utm_name: 'some campaign',
+ utm_test: 'other value',
+ Company: 'ABC',
+ },
+ event_type: '$identify',
+ groups: {
+ Company: 'ABC',
+ },
+ time: 1603180498983,
+ user_id: 'sampleusrRudder3',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.eu.amplitude.com/groupidentify',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ identification: [
+ '{"group_type":"Company","group_value":"ABC","group_properties":{"KEY_3":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"KEY_2":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"name_trait":"Company","value_trait":"ABC"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 55',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'alias',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ integrations: {
+ All: true,
+ },
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ residencyServer: 'EU',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.eu.amplitude.com/usermap',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ mapping: [
+ '{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3","user_properties":{"initial_referrer":"https://docs.rudderstack.com","initial_referring_domain":"docs.rudderstack.com","utm_source":"google","utm_medium":"medium","utm_term":"keyword","utm_content":"some content","utm_name":"some campaign","utm_test":"other value"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 56',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'App_Opened',
+ sentAt: '2021-11-17T19:13:52.106Z',
+ userId: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 3,
+ },
+ },
+ originalTimestamp: '2021-11-17T19:13:51.143Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ event_id: 3,
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ event_type: 'App_Opened',
+ user_id: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ device_brand: 'samsung',
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 57',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'App_Opened',
+ sentAt: '2021-11-17T19:13:52.106Z',
+ userId: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 0,
+ },
+ },
+ originalTimestamp: '2021-11-17T19:13:51.143Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ event_id: 0,
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ event_type: 'App_Opened',
+ user_id: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ device_brand: 'samsung',
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 58',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'App_Opened',
+ sentAt: '2021-11-17T19:13:52.106Z',
+ userId: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ channel: 'mobile',
+ context: {
+ source: 'test',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'T-Mobile',
+ },
+ location: {
+ country: 'United States',
+ city: 'San Francisco',
+ latitude: '37.7672319',
+ longitude: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ os: {
+ name: 'Android',
+ version: '11',
+ },
+ app: {
+ version: '2.6.0 v3',
+ },
+ device: {
+ type: 'Android',
+ model: 'SM-A025M',
+ manufacturer: 'samsung',
+ },
+ },
+ messageId: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: '0',
+ },
+ },
+ originalTimestamp: '2021-11-17T19:13:51.143Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ trackProductsOnce: true,
+ trackRevenuePerProduct: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '11',
+ device_model: 'SM-A025M',
+ device_manufacturer: 'samsung',
+ platform: 'Android',
+ carrier: 'T-Mobile',
+ app_version: '2.6.0 v3',
+ language: 'en-US',
+ insert_id: '7208abb6-2c4e-45bb-bf5b-aa426f3593a2',
+ user_properties: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a31aaa1',
+ address: {
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ },
+ event_properties: {
+ externalID: '1637170658229-3961832492194264209',
+ },
+ event_type: 'App_Opened',
+ user_id: 'ab419c3a-47ce-11ec-82ac-16a1bb813a59',
+ device_brand: 'samsung',
+ time: 1597383030118,
+ session_id: -1,
+ location_lat: '37.7672319',
+ location_lng: '-122.4021353',
+ dma: 'San Francisco-Oakland-San Jose, CA',
+ country: 'United States',
+ city: 'San Francisco',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 59',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 6,
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ event_id: 6,
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 60',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 6,
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'email',
+ groupValueTrait: 'age',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ event_id: 6,
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: -1,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 61',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'sampleusrRudder3',
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 3,
+ },
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: 'ABC',
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'name_trait',
+ groupValueTrait: 'value_trait',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '85.0.4183.121',
+ device_model: 'Mac',
+ platform: 'Web',
+ event_id: 3,
+ device_id: 'my-anonymous-id-new',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.1.5',
+ language: 'en-US',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ utm_source: 'google',
+ utm_medium: 'medium',
+ utm_term: 'keyword',
+ utm_content: 'some content',
+ utm_name: 'some campaign',
+ utm_test: 'other value',
+ Company: 'ABC',
+ },
+ event_type: '$identify',
+ groups: {
+ Company: 'ABC',
+ },
+ time: 1603180498983,
+ user_id: 'sampleusrRudder3',
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/groupidentify',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ identification: [
+ '{"group_type":"Company","group_value":"ABC","group_properties":{"KEY_3":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"KEY_2":{"CHILD_KEY_92":"value_95","CHILD_KEY_102":"value_103"},"name_trait":"Company","value_trait":"ABC"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 62',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen View',
+ properties: {
+ prop1: '5',
+ event_id: 7,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 7,
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ event_id: 7,
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ event_id: 7,
+ name: 'Screen View',
+ },
+ user_properties: {},
+ event_type: 'Viewed Screen View Screen',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 63',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 2,
+ },
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'Viewed ApplicationLoaded Page',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ event_id: 2,
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 64',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'alias',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 67,
+ },
+ },
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/usermap',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ api_key: 'abcde',
+ mapping: [
+ '{"global_user_id":"newUserIdAlias","user_id":"sampleusrRudder3","event_id":67,"user_properties":{"initial_referrer":"https://docs.rudderstack.com","initial_referring_domain":"docs.rudderstack.com","utm_source":"google","utm_medium":"medium","utm_term":"keyword","utm_content":"some content","utm_name":"some campaign","utm_test":"other value"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: 'my-anonymous-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 65',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '5d205961641ee6c5',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '6',
+ name: 'Sample Kotlin',
+ namespace: 'com.example.testapp1mg',
+ version: '1.2',
+ },
+ device: {
+ id: '5d205961641ee6c5',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'Android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.7.0',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '7.1.1',
+ },
+ screen: {
+ density: 440,
+ height: 2148,
+ width: 1080,
+ },
+ sessionId: '1662393792',
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 7.1.1; Android SDK built for x86 Build/NYC)',
+ },
+ event: 'Screen event',
+ integrations: {
+ All: true,
+ },
+ messageId: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ properties: {
+ name: 'Screen event',
+ },
+ originalTimestamp: '2022-09-05T16:04:43.250Z',
+ type: 'screen',
+ userId: 'User Android',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '7.1.1',
+ device_model: 'Android SDK built for x86',
+ device_manufacturer: 'Google',
+ device_id: '5d205961641ee6c5',
+ carrier: 'Android',
+ app_name: 'Sample Kotlin',
+ app_version: '1.2',
+ platform: 'Android',
+ language: 'en-US',
+ event_properties: {
+ name: 'Screen event',
+ },
+ insert_id: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ user_properties: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ event_type: 'Viewed Screen event Screen',
+ user_id: 'User Android',
+ device_brand: 'Google',
+ time: 1662393883250,
+ session_id: 1662393792,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '5d205961641ee6c5',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 66',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '5d205961641ee6c5',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '6',
+ name: 'Sample Kotlin',
+ namespace: 'com.example.testapp1mg',
+ version: '1.2',
+ },
+ device: {
+ id: '5d205961641ee6c5',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'Android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.7.0',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '7.1.1',
+ },
+ screen: {
+ density: 440,
+ height: 2148,
+ width: 1080,
+ },
+ sessionId: '1662393792',
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 7.1.1; Android SDK built for x86 Build/NYC)',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ properties: {},
+ originalTimestamp: '2022-09-05T16:04:43.250Z',
+ type: 'screen',
+ userId: 'User Android',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '7.1.1',
+ device_model: 'Android SDK built for x86',
+ device_manufacturer: 'Google',
+ device_id: '5d205961641ee6c5',
+ carrier: 'Android',
+ app_name: 'Sample Kotlin',
+ app_version: '1.2',
+ platform: 'Android',
+ language: 'en-US',
+ event_properties: {},
+ insert_id: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ user_properties: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ event_type: 'Viewed Screen',
+ user_id: 'User Android',
+ device_brand: 'Google',
+ time: 1662393883250,
+ session_id: 1662393792,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '5d205961641ee6c5',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 67',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ sessionId: '1662393792',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: 'test os',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: 'lynnanderson@smith.net',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ ip: '0.0.0.0',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ device_id: 'lynnanderson@smith.net',
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ session_id: 1662393792,
+ country: 'India',
+ city: 'kolkata',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 68',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '5d205961641ee6c5',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '6',
+ name: 'Sample Kotlin',
+ namespace: 'com.example.testapp1mg',
+ version: '1.2',
+ },
+ device: {
+ id: '5d205961641ee6c5',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'Android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.7.0',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '7.1.1',
+ },
+ screen: {
+ density: 440,
+ height: 2148,
+ width: 1080,
+ },
+ sessionId: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 7.1.1; Android SDK built for x86 Build/NYC)',
+ },
+ event: 'Screen event',
+ integrations: {
+ All: true,
+ },
+ messageId: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ properties: {
+ name: 'Screen event',
+ },
+ originalTimestamp: '2022-09-05T16:04:43.250Z',
+ type: 'screen',
+ userId: 'User Android',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Android',
+ os_version: '7.1.1',
+ device_model: 'Android SDK built for x86',
+ device_manufacturer: 'Google',
+ device_id: '5d205961641ee6c5',
+ carrier: 'Android',
+ app_name: 'Sample Kotlin',
+ app_version: '1.2',
+ platform: 'Android',
+ language: 'en-US',
+ event_properties: {
+ name: 'Screen event',
+ },
+ insert_id: '1662393883248-509420bf-b812-4f8d-bdb2-8c811bfde87f',
+ user_properties: {
+ anonymousId: '5d205961641ee6c5',
+ id: 'User Android',
+ userId: 'User Android',
+ },
+ event_type: 'Viewed Screen event Screen',
+ user_id: 'User Android',
+ device_brand: 'Google',
+ time: 1662393883250,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '5d205961641ee6c5',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 69: ERROR - Either of user ID or device ID fields must be specified',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'group',
+ messageId: 'e5034df0-a404-47b4-a463-76df99934fea',
+ originalTimestamp: '2020-10-20T07:54:58.983Z',
+ integrations: {
+ All: true,
+ },
+ groupId: 'Sample_groupId23',
+ traits: {
+ KEY_3: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ KEY_2: {
+ CHILD_KEY_92: 'value_95',
+ CHILD_KEY_102: 'value_103',
+ },
+ name_trait: 'Company',
+ value_trait: 'ABC',
+ },
+ sentAt: '2020-10-20T07:54:58.983Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ groupTypeTrait: 'name_trait',
+ groupValueTrait: 'value_trait',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Either of user ID or device ID fields must be specified',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 70',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 2,
+ },
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedPageEventName: true,
+ userProvidedPageEventString: 'My custom Page Name is {{ name }} . Custom Name.',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'My custom Page Name is ApplicationLoaded . Custom Name.',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ event_id: 2,
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 71',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 2,
+ },
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedPageEventName: true,
+ userProvidedPageEventString: '{{name}}',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'ApplicationLoaded',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ event_id: 2,
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 72',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 2,
+ },
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedPageEventName: true,
+ userProvidedPageEventString: '',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'ApplicationLoaded',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ event_id: 2,
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 73',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: 'Home Page',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: {
+ All: true,
+ Amplitude: {
+ event_id: 2,
+ },
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedPageEventName: false,
+ userProvidedPageEventString: 'Viewed {{context.page.title}} event.',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ event_id: 2,
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ event_type: 'Viewed Page',
+ user_id: '12345',
+ time: 1571051718299,
+ session_id: -1,
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 74',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen View',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedScreenEventName: true,
+ userProvidedScreenEventString: 'My {{ event }} event.',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen View',
+ },
+ user_properties: {},
+ event_type: 'My Screen View event.',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 75',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen View',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedScreenEventName: false,
+ userProvidedScreenEventString: 'My {{ event }} event.',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen View',
+ },
+ user_properties: {},
+ event_type: 'Viewed Screen View Screen',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 76',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ event: 'Screen same as event',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedScreenEventName: true,
+ userProvidedScreenEventString: '{{ event }}',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen same as event',
+ },
+ user_properties: {},
+ event_type: 'Screen same as event',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description: 'Test 77',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'screen',
+ userId: 'identified user id',
+ anonymousId: 'anon-id-new',
+ name: 'Screen',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedScreenEventName: true,
+ userProvidedScreenEventString: '',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ device_id: 'anon-id-new',
+ event_properties: {
+ prop1: '5',
+ name: 'Screen',
+ },
+ user_properties: {},
+ event_type: 'Screen',
+ user_id: 'identified user id',
+ time: 1580602989544,
+ session_id: -1,
+ ip: '14.5.67.21',
+ library: 'rudderstack',
+ },
+ ],
+ options: {
+ min_id_length: 1,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anon-id-new',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'am',
+ description:
+ 'Test 78 -> Page call invalid event type as page name and template is not provided',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ request_ip: '1.1.1.1',
+ type: 'page',
+ userId: '12345',
+ properties: {},
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ useUserDefinedPageEventName: true,
+ userProvidedPageEventString: '',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Event type is missing. Please send it under `event.type`. For page/screen events, send it under `event.name`',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'AM',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/am/router/data.ts b/test/integrations/destinations/am/router/data.ts
new file mode 100644
index 00000000000..1b4026c85e0
--- /dev/null
+++ b/test/integrations/destinations/am/router/data.ts
@@ -0,0 +1,259 @@
+export const data = [
+ {
+ name: 'am',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'abcde', groupTypeTrait: 'email', groupValueTrait: 'age' },
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: { email: 'test@rudderstack.com', anonymousId: '12345' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ request_ip: '1.1.1.1',
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ integrations: { All: true },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: { Config: { apiKey: 'abcde' } },
+ },
+ ],
+ destType: 'am',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ library: 'rudderstack',
+ platform: 'Web',
+ device_id: '123456',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ session_id: -1,
+ insert_id: '84e26acc-56a5-4835-8233-591137fca468',
+ city: 'kolkata',
+ country: 'India',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ event_type: '$identify',
+ time: 1571043797562,
+ user_id: '123456',
+ ip: '0.0.0.0',
+ },
+ ],
+ options: { min_id_length: 1 },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'abcde', groupTypeTrait: 'email', groupValueTrait: 'age' },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.amplitude.com/2/httpapi',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ api_key: 'abcde',
+ events: [
+ {
+ os_name: 'Chrome',
+ os_version: '77.0.3865.90',
+ device_model: 'Mac',
+ library: 'rudderstack',
+ platform: 'Web',
+ device_id: '00000000000000000000000000',
+ app_name: 'RudderLabs JavaScript SDK',
+ app_version: '1.0.0',
+ language: 'en-US',
+ event_type: 'Viewed ApplicationLoaded Page',
+ event_properties: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ name: 'ApplicationLoaded',
+ },
+ session_id: -1,
+ insert_id: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ ip: '1.1.1.1',
+ user_properties: {
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ user_id: '12345',
+ time: 1571051718299,
+ },
+ ],
+ options: { min_id_length: 1 },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: { Config: { apiKey: 'abcde' } },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/appcues/router/data.ts b/test/integrations/destinations/appcues/router/data.ts
index ddc8dddf57c..729aee7699c 100644
--- a/test/integrations/destinations/appcues/router/data.ts
+++ b/test/integrations/destinations/appcues/router/data.ts
@@ -21,15 +21,9 @@ export const data = [
version: '1.1.9',
},
campaign: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.9',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.9' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/rudder-sdk-js/tests/html/script-test.html',
referrer: '',
@@ -37,16 +31,12 @@ export const data = [
title: '',
url: 'http://localhost:4321/rudder-sdk-js/tests/html/script-test.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
traits: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
originalTimestamp: '2021-01-04T08:25:04.780Z',
receivedAt: '2021-01-04T13:55:04.799+05:30',
@@ -57,15 +47,8 @@ export const data = [
type: 'identify',
userId: 'onlyUserId',
},
- metadata: {
- jobId: 1,
- },
- destination: {
- Config: {
- accountId: '86086',
- useNativeSDK: false,
- },
- },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: { Config: { accountId: '86086', useNativeSDK: false } },
},
{
message: {
@@ -79,15 +62,9 @@ export const data = [
version: '1.1.9',
},
campaign: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.9',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.9' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/rudder-sdk-js/tests/html/script-test.html',
referrer: '',
@@ -95,19 +72,12 @@ export const data = [
title: '',
url: 'http://localhost:4321/rudder-sdk-js/tests/html/script-test.html',
},
- screen: {
- density: 2,
- },
- traits: {
- 'first name': 'John',
- 'last name': 'Abraham',
- },
+ screen: { density: 2 },
+ traits: { 'first name': 'John', 'last name': 'Abraham' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '57494c6a-3c62-4b30-83aa-6e821d37ac75',
originalTimestamp: '2021-01-04T08:25:04.786Z',
receivedAt: '2021-01-04T13:55:04.799+05:30',
@@ -118,15 +88,8 @@ export const data = [
type: 'identify',
userId: 'userIdWithProperties',
},
- metadata: {
- jobId: 2,
- },
- destination: {
- Config: {
- accountId: '86086',
- useNativeSDK: false,
- },
- },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: { Config: { accountId: '86086', useNativeSDK: false } },
},
],
destType: 'appcues',
@@ -145,34 +108,20 @@ export const data = [
XML: {},
JSON_ARRAY: {},
FORM: {},
- JSON: {
- request_id: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
- profile_update: {},
- },
+ JSON: { request_id: '6a5f38c0-4e75-4268-a066-2b73fbcad01f', profile_update: {} },
},
type: 'REST',
files: {},
method: 'POST',
params: {},
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://api.appcues.com/v1/accounts/86086/users/onlyUserId/activity',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- accountId: '86086',
- useNativeSDK: false,
- },
- },
+ destination: { Config: { accountId: '86086', useNativeSDK: false } },
},
{
batchedRequest: {
@@ -182,36 +131,22 @@ export const data = [
FORM: {},
JSON: {
request_id: '57494c6a-3c62-4b30-83aa-6e821d37ac75',
- profile_update: {
- 'last name': 'Abraham',
- 'first name': 'John',
- },
+ profile_update: { 'last name': 'Abraham', 'first name': 'John' },
},
},
type: 'REST',
files: {},
method: 'POST',
params: {},
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
version: '1',
endpoint:
'https://api.appcues.com/v1/accounts/86086/users/userIdWithProperties/activity',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- accountId: '86086',
- useNativeSDK: false,
- },
- },
+ destination: { Config: { accountId: '86086', useNativeSDK: false } },
},
],
},
diff --git a/test/integrations/destinations/attentive_tag/router/data.ts b/test/integrations/destinations/attentive_tag/router/data.ts
index c52a6ed2e3d..63bd477f0cf 100644
--- a/test/integrations/destinations/attentive_tag/router/data.ts
+++ b/test/integrations/destinations/attentive_tag/router/data.ts
@@ -10,28 +10,16 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- signUpSourceId: '241654',
- },
- },
- metadata: {
- jobId: 1,
- },
+ destination: { Config: { apiKey: 'dummyApiKey', signUpSourceId: '241654' } },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
anonymousId: '4eb021e9-a2af-4926-ae82-fe996d12f3c5',
channel: 'web',
context: {
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
traits: {
- company: {
- id: 'abc123',
- },
+ company: { id: 'abc123' },
createdAt: 'Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)',
email: 'test0@gmail.com',
phone: '+16465453911',
@@ -39,26 +27,14 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
externalId: [
- {
- type: 'clientUsrId',
- id: 1,
- },
- {
- type: 'shopifyId',
- id: 1,
- },
- {
- type: 'klaviyoId',
- id: 1,
- },
+ { type: 'clientUsrId', id: 1 },
+ { type: 'shopifyId', id: 1 },
+ { type: 'klaviyoId', id: 1 },
],
},
integrations: {
All: true,
- attentive_tag: {
- signUpSourceId: '241654',
- identifyOperation: 'unsubscribe',
- },
+ attentive_tag: { signUpSourceId: '241654', identifyOperation: 'unsubscribe' },
},
messageId: 'e108eb05-f6cd-4624-ba8c-568f2e2b3f92',
receivedAt: '2020-10-16T13:56:14.945+05:30',
@@ -88,31 +64,17 @@ export const data = [
},
params: {},
body: {
- JSON: {
- user: {
- phone: '+16465453911',
- email: 'test0@gmail.com',
- },
- },
+ JSON: { user: { phone: '+16465453911', email: 'test0@gmail.com' } },
JSON_ARRAY: {},
XML: {},
FORM: {},
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- signUpSourceId: '241654',
- },
- },
+ destination: { Config: { apiKey: 'dummyApiKey', signUpSourceId: '241654' } },
},
],
},
diff --git a/test/integrations/destinations/autopilot/router/data.ts b/test/integrations/destinations/autopilot/router/data.ts
index cbfe0c42075..92117a97c80 100644
--- a/test/integrations/destinations/autopilot/router/data.ts
+++ b/test/integrations/destinations/autopilot/router/data.ts
@@ -17,28 +17,18 @@ export const data = [
ID: '1afjX4MlAucK57Q0ctTVlD27Tvo',
Name: 'AUTOPILOT',
DisplayName: 'Autopilot',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
apiKey: 'dummyApiKey',
- customMappings: [
- {
- from: '0001',
- to: 'Signup',
- },
- ],
+ customMappings: [{ from: '0001', to: 'Signup' }],
triggerId: '00XX',
},
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
channel: 'web',
@@ -49,15 +39,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.1-rc.2',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.1-rc.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.1-rc.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/tests/html/index4.html',
referrer: '',
@@ -65,25 +49,17 @@ export const data = [
title: '',
url: 'http://localhost/tests/html/index4.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'fad9b3fb-5778-4db3-9fb6-7168b554191f',
originalTimestamp: '2020-04-17T14:42:44.722Z',
receivedAt: '2020-04-17T20:12:44.758+05:30',
request_ip: '[::1]:53513',
sentAt: '2020-04-17T14:42:44.722Z',
- traits: {
- age: 23,
- email: 'testmp@rudderstack.com',
- firstname: 'Test Kafka',
- },
+ traits: { age: 23, email: 'testmp@rudderstack.com', firstname: 'Test Kafka' },
timestamp: '2020-04-17T20:12:44.758+05:30',
type: 'identify',
userId: 'user12345',
@@ -97,28 +73,18 @@ export const data = [
ID: '1afjX4MlAucK57Q0ctTVlD27Tvo',
Name: 'AUTOPILOT',
DisplayName: 'Autopilot',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
apiKey: 'dummyApiKey',
- customMappings: [
- {
- from: '0001',
- to: 'Signup',
- },
- ],
+ customMappings: [{ from: '0001', to: 'Signup' }],
triggerId: '00XX',
},
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
channel: 'web',
@@ -129,15 +95,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.1-rc.2',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.1-rc.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.1-rc.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/tests/html/index4.html',
referrer: '',
@@ -145,27 +105,16 @@ export const data = [
title: '',
url: 'http://localhost/tests/html/index4.html',
},
- screen: {
- density: 2,
- },
- traits: {
- age: 23,
- email: 'testmp@rudderstack.com',
- firstname: 'Test Kafka',
- },
+ screen: { density: 2 },
+ traits: { age: 23, email: 'testmp@rudderstack.com', firstname: 'Test Kafka' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
},
event: 'test track with property',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '37b75e61-9bd2-4fb8-91ed-e3a064905f3a',
originalTimestamp: '2020-04-17T14:42:44.724Z',
- properties: {
- test_prop_1: 'test prop',
- test_prop_2: 1232,
- },
+ properties: { test_prop_1: 'test prop', test_prop_2: 1232 },
receivedAt: '2020-04-17T20:12:44.758+05:30',
request_ip: '[::1]:53512',
sentAt: '2020-04-17T14:42:44.725Z',
@@ -202,9 +151,7 @@ export const data = [
contact: {
Email: 'testmp@rudderstack.com',
FirstName: 'Test Kafka',
- custom: {
- age: 23,
- },
+ custom: { age: 23 },
},
},
XML: {},
@@ -214,11 +161,7 @@ export const data = [
files: {},
userId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -228,19 +171,11 @@ export const data = [
ID: '1afjX4MlAucK57Q0ctTVlD27Tvo',
Name: 'AUTOPILOT',
DisplayName: 'Autopilot',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
apiKey: 'dummyApiKey',
- customMappings: [
- {
- from: '0001',
- to: 'Signup',
- },
- ],
+ customMappings: [{ from: '0001', to: 'Signup' }],
triggerId: '00XX',
},
Enabled: true,
@@ -262,12 +197,7 @@ export const data = [
},
params: {},
body: {
- JSON: {
- property: {
- test_prop_1: 'test prop',
- test_prop_2: 1232,
- },
- },
+ JSON: { property: { test_prop_1: 'test prop', test_prop_2: 1232 } },
XML: {},
JSON_ARRAY: {},
FORM: {},
@@ -275,11 +205,7 @@ export const data = [
files: {},
userId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -289,19 +215,11 @@ export const data = [
ID: '1afjX4MlAucK57Q0ctTVlD27Tvo',
Name: 'AUTOPILOT',
DisplayName: 'Autopilot',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
apiKey: 'dummyApiKey',
- customMappings: [
- {
- from: '0001',
- to: 'Signup',
- },
- ],
+ customMappings: [{ from: '0001', to: 'Signup' }],
triggerId: '00XX',
},
Enabled: true,
diff --git a/test/integrations/destinations/bingads_audience/processor/data.ts b/test/integrations/destinations/bingads_audience/processor/data.ts
new file mode 100644
index 00000000000..b61f4efea8f
--- /dev/null
+++ b/test/integrations/destinations/bingads_audience/processor/data.ts
@@ -0,0 +1,1155 @@
+export const data = [
+ {
+ name: 'bingads_audience',
+ description: 'unhashed email available with hashEmail as true in config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'alex@email.com',
+ },
+ {
+ email: 'amy@abc.com',
+ },
+ {
+ email: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'alex@email.com',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: 'amy@abc.com',
+ },
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: 'van@abc.com',
+ },
+ ],
+ action: 'Add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'hashed email available with hashEmail as false in config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ action: 'Add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'Unsupported action type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ addition: [
+ {
+ email: 'alex@email.com',
+ },
+ {
+ email: 'amy@abc.com',
+ },
+ {
+ email: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 400,
+ error:
+ 'unsupported action type. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: unsupported action type. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'Unsupported event type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'track',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'alex@email.com',
+ },
+ {
+ email: 'amy@abc.com',
+ },
+ {
+ email: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 400,
+ error:
+ 'Event type track is not supported. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Event type track is not supported. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'event type not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: '',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'alex@email.com',
+ },
+ {
+ email: 'amy@abc.com',
+ },
+ {
+ email: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 400,
+ error:
+ 'message Type is not present. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message Type is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'Message properties is not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 400,
+ error:
+ 'Message properties is not present. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Message properties is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'listData is not present in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {},
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 400,
+ error:
+ 'listData is not present inside properties. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: listData is not present inside properties. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'Both add and remove are present in listData',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ update: [
+ {
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ action: 'Remove',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ action: 'Replace',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destinationId: 1234,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'Only single user data is present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'alex@email.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'alex@email.com',
+ },
+ ],
+ action: 'Add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'unhashed email available with hashEmail as true in config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'alex@email.com',
+ },
+ {
+ email: 'amy@abc.com',
+ },
+ {
+ email: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: true,
+ },
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationType: '',
+ namespace: '',
+ sourceType: '',
+ },
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'alex@email.com',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: 'amy@abc.com',
+ },
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: 'van@abc.com',
+ },
+ ],
+ action: 'Add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: '',
+ files: {},
+ headers: {},
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'hashed email available with hashEmail as false in config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ update: [
+ {
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ ],
+ remove: [
+ {
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: false,
+ },
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ email: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ },
+ {
+ hashedEmail:
+ '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ email: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ },
+ ],
+ action: 'Replace',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ list: [
+ {
+ hashedEmail:
+ '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ email: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ },
+ ],
+ action: 'Remove',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'bingads_audience',
+ description: 'validateInput should fail when properties are missing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ customerAccountId: '89236978',
+ customerId: '78678678',
+ audienceId: '564567',
+ hashEmail: false,
+ },
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ statusCode: 400,
+ error:
+ 'Message properties is not present. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Message properties is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ implementation: 'cdkV2',
+ destType: 'BINGADS_AUDIENCE',
+ module: 'destination',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/bluecore/data.ts b/test/integrations/destinations/bluecore/data.ts
new file mode 100644
index 00000000000..c2205c25a18
--- /dev/null
+++ b/test/integrations/destinations/bluecore/data.ts
@@ -0,0 +1,6 @@
+import { ecomTestData } from './ecommTestData';
+import { identifyData } from './identifyTestData';
+import { trackTestData } from './trackTestData';
+import { validationTestData } from './validationTestData';
+
+export const data = [...identifyData, ...trackTestData, ...ecomTestData, ...validationTestData];
diff --git a/test/integrations/destinations/bluecore/ecommTestData.ts b/test/integrations/destinations/bluecore/ecommTestData.ts
new file mode 100644
index 00000000000..de7584df781
--- /dev/null
+++ b/test/integrations/destinations/bluecore/ecommTestData.ts
@@ -0,0 +1,489 @@
+import { generateSimplifiedTrackPayload, transformResultBuilder } from '../../testUtils';
+
+const metadata = {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+};
+
+const destination = {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'BLUECORE',
+ Config: {
+ bluecoreNamespace: 'dummy_sandbox',
+ eventsMapping: [
+ {
+ from: 'ABC Searched',
+ to: 'search',
+ },
+ {
+ from: 'testPurchase',
+ to: 'purchase',
+ },
+ {
+ from: 'testboth',
+ to: 'wishlist',
+ },
+ {
+ from: 'testboth',
+ to: 'add_to_cart',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+};
+
+const commonTraits = {
+ id: 'user@1',
+ age: '22',
+ anonymousId: '9c6bd77ea9da3e68',
+};
+
+const commonPropsWithProducts = {
+ property1: 'value1',
+ property2: 'value2',
+ products: [
+ {
+ product_id: '123',
+ sku: 'sku123',
+ name: 'Product 1',
+ price: 100,
+ quantity: 2,
+ },
+ {
+ product_id: '124',
+ sku: 'sku124',
+ name: 'Product 2',
+ price: 200,
+ quantity: 3,
+ },
+ ],
+};
+
+const commonPropsWithoutProducts = {
+ property1: 'value1',
+ property2: 'value2',
+ product_id: '123',
+};
+
+const commonOutputHeaders = {
+ 'Content-Type': 'application/json',
+};
+
+const eventEndPoint = 'https://api.bluecore.com/api/track/mobile/v1';
+
+export const ecomTestData = [
+ {
+ id: 'bluecore-track-test-1',
+ name: 'bluecore',
+ description:
+ 'Track event call with custom event mapped in destination config to purchase event. This will fail as order_id is not present in the payload',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'testPurchase',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '[Bluecore] property:: order_id is required for purchase event: Workflow: procWorkflow, Step: handleTrackEvent, ChildStep: preparePayload, OriginalError: [Bluecore] property:: order_id is required for purchase event',
+ metadata,
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-2',
+ name: 'bluecore',
+ description:
+ 'Track event call with custom event mapped in destination config to purchase event. This will fail as total is not present in the payload',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'testPurchase',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: { ...commonPropsWithProducts, order_id: '123' },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '[Bluecore] property:: total is required for purchase event: Workflow: procWorkflow, Step: handleTrackEvent, ChildStep: preparePayload, OriginalError: [Bluecore] property:: total is required for purchase event',
+ metadata,
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-3',
+ name: 'bluecore',
+ description:
+ 'Track event call with products searched event not mapped in destination config. This will fail as search_query is not present in the payload',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'Products Searched',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: { ...commonPropsWithoutProducts },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '[Bluecore] property:: search_query is required for search event: Workflow: procWorkflow, Step: handleTrackEvent, ChildStep: preparePayload, OriginalError: [Bluecore] property:: search_query is required for search event',
+ metadata,
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-4',
+ name: 'bluecore',
+ description:
+ 'Track event call with Product Viewed event not mapped in destination config. This will be sent with viewed_product name. This event without properties.products will add entire property object as products as this event type is recommended to sent with products',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'product viewed',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithoutProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'test@rudderstack.com',
+ customer: {
+ age: '22',
+ email: 'test@rudderstack.com',
+ },
+ products: [
+ {
+ id: '123',
+ property1: 'value1',
+ property2: 'value2',
+ },
+ ],
+ },
+ event: 'viewed_product',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-5',
+ name: 'bluecore',
+ description:
+ 'Track event call with custom event mapped with two standard ecomm events in destination config. Both of the two corresponding standard events will be sent ',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'testboth',
+ sentAt: '2020-08-14T05:30:30.118Z',
+ channel: 'web',
+ context: {
+ source: 'test',
+ userAgent: 'chrome',
+ traits: {
+ id: 'user@1',
+ age: '22',
+ anonymousId: '9c6bd77ea9da3e68',
+ },
+ device: {
+ advertisingId: 'abc123',
+ },
+ library: {
+ name: 'rudder-sdk-ruby-sync',
+ version: '1.0.6',
+ },
+ },
+ properties: {
+ property1: 'value1',
+ property2: 'value2',
+ product_id: '123',
+ },
+ anonymousId: 'new-id',
+ integrations: {
+ All: true,
+ },
+ },
+ metadata,
+ destination,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'user@1',
+ customer: {
+ age: '22',
+ },
+ products: [
+ {
+ id: '123',
+ property1: 'value1',
+ property2: 'value2',
+ },
+ ],
+ },
+ event: 'wishlist',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'user@1',
+ customer: {
+ age: '22',
+ },
+ products: [
+ {
+ id: '123',
+ property1: 'value1',
+ property2: 'value2',
+ },
+ ],
+ },
+ event: 'add_to_cart',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-6',
+ name: 'bluecore',
+ description:
+ 'Track event call with Order Completed event without product array and not mapped in destination config. This will be sent with purchase name. This event without properties.products will generate error as products array is required for purchase event and ordered completed is a standard ecomm event',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'Order Completed',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithoutProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '[Bluecore]:: products array is required for purchase event: Workflow: procWorkflow, Step: handleTrackEvent, ChildStep: preparePayload, OriginalError: [Bluecore]:: products array is required for purchase event',
+ metadata,
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/bluecore/identifyTestData.ts b/test/integrations/destinations/bluecore/identifyTestData.ts
new file mode 100644
index 00000000000..660e335bc69
--- /dev/null
+++ b/test/integrations/destinations/bluecore/identifyTestData.ts
@@ -0,0 +1,381 @@
+import {
+ overrideDestination,
+ transformResultBuilder,
+ generateSimplifiedIdentifyPayload,
+} from '../../testUtils';
+
+const destination = {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'BLUECORE',
+ Config: {
+ bluecoreNamespace: 'dummy_sandbox',
+ eventsMapping: [
+ {
+ from: 'ABC Searched',
+ to: 'search',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+};
+
+const metadata = {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+};
+
+const commonTraits = {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ phone: '+1234589947',
+ gender: 'non-binary',
+ db: '19950715',
+ lastname: 'Rudderlabs',
+ firstName: 'Test',
+ address: {
+ city: 'Kolkata',
+ state: 'WB',
+ zip: '700114',
+ country: 'IN',
+ },
+};
+
+const contextWithExternalId = {
+ traits: {
+ ...commonTraits,
+ email: 'abc@gmail.com',
+ },
+ externalId: [{ type: 'bluecoreExternalId', id: '54321' }],
+};
+
+const commonOutputCustomerProperties = {
+ first_name: 'Test',
+ last_name: 'Rudderlabs',
+ sex: 'non-binary',
+ address: {
+ city: 'Kolkata',
+ state: 'WB',
+ zip: '700114',
+ country: 'IN',
+ },
+};
+
+const commonOutputHeaders = {
+ 'Content-Type': 'application/json',
+};
+
+const anonymousId = '97c46c81-3140-456d-b2a9-690d70aaca35';
+const userId = 'user@1';
+const sentAt = '2021-01-03T17:02:53.195Z';
+const originalTimestamp = '2021-01-03T17:02:53.193Z';
+const commonEndpoint = 'https://api.bluecore.com/api/track/mobile/v1';
+
+export const identifyData = [
+ {
+ id: 'bluecore-identify-test-1',
+ name: 'bluecore',
+ description:
+ '[Success]: Identify call with all properties, that creates a customer in bluecore by default',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should containt one payload with event name as customer_patch and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ metadata,
+ message: generateSimplifiedIdentifyPayload({
+ context: {
+ traits: { ...commonTraits, email: 'abc@gmail.com' },
+ },
+ anonymousId,
+ userId,
+ sentAt,
+ originalTimestamp,
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: commonEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'abc@gmail.com',
+ customer: { ...commonOutputCustomerProperties, email: 'abc@gmail.com' },
+ },
+ token: 'dummy_sandbox',
+ event: 'customer_patch',
+ },
+ }),
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-identify-test-2',
+ name: 'bluecore',
+ description:
+ '[Success]: Identify call with all properties,along with action as identify that mandatorily needs email to link distict_id with customer in bluecore',
+ scenario: 'Business',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ metadata,
+ message: generateSimplifiedIdentifyPayload({
+ context: {
+ traits: commonTraits,
+ },
+ traits: {
+ action: 'identify',
+ },
+ anonymousId,
+ userId,
+ sentAt,
+ originalTimestamp,
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '[Bluecore] property:: email is required for identify action: Workflow: procWorkflow, Step: prepareIdentifyPayload, ChildStep: undefined, OriginalError: [Bluecore] property:: email is required for identify action',
+ metadata: {
+ destinationId: '',
+ destinationType: '',
+ namespace: '',
+ sourceType: '',
+ },
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-identify-test-3',
+ name: 'bluecore',
+ description:
+ '[Success]: Identify call with all properties,along with action as random which is not supported by bluecore for identify action',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should containt one payload with event name as identify and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ metadata,
+ message: generateSimplifiedIdentifyPayload({
+ context: {
+ traits: commonTraits,
+ },
+ traits: {
+ action: 'random',
+ },
+ anonymousId,
+ userId,
+ sentAt,
+ originalTimestamp,
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ "[Bluecore] traits.action must be 'identify' for identify action: Workflow: procWorkflow, Step: prepareIdentifyPayload, ChildStep: undefined, OriginalError: [Bluecore] traits.action must be 'identify' for identify action",
+ metadata: {
+ destinationId: '',
+ destinationType: '',
+ namespace: '',
+ sourceType: '',
+ },
+ statTags: {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-identify-test-4',
+ name: 'bluecore',
+ description:
+ '[Success]: Identify call with all properties, that stitches a customer email with distinct_id in bluecore if action is identify and email is present in traits',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should containt one payload with event name as identify and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ metadata,
+ message: generateSimplifiedIdentifyPayload({
+ context: {
+ traits: { ...commonTraits, email: 'abc@gmail.com' },
+ },
+ traits: {
+ action: 'identify',
+ },
+ anonymousId,
+ userId,
+ sentAt,
+ originalTimestamp,
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: commonEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'user@1',
+ customer: { ...commonOutputCustomerProperties, email: 'abc@gmail.com' },
+ },
+ token: 'dummy_sandbox',
+ event: 'identify',
+ },
+ }),
+ metadata: {
+ destinationId: '',
+ destinationType: '',
+ namespace: '',
+ sourceType: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-identify-test-5',
+ name: 'bluecore',
+ description:
+ '[Success]: Identify call with all properties and externalId, that creates a customer in bluecore by default, distinct_id is set to externalId value',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should containt one payload with event name as customer_patch and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ metadata,
+ message: generateSimplifiedIdentifyPayload({
+ context: contextWithExternalId,
+ anonymousId,
+ userId,
+ sentAt,
+ originalTimestamp,
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: commonEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: '54321',
+ customer: { ...commonOutputCustomerProperties, email: 'abc@gmail.com' },
+ },
+ token: 'dummy_sandbox',
+ event: 'customer_patch',
+ },
+ }),
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/bluecore/trackTestData.ts b/test/integrations/destinations/bluecore/trackTestData.ts
new file mode 100644
index 00000000000..72d48bf93dc
--- /dev/null
+++ b/test/integrations/destinations/bluecore/trackTestData.ts
@@ -0,0 +1,439 @@
+import {
+ generateSimplifiedTrackPayload,
+ generateTrackPayload,
+ overrideDestination,
+ transformResultBuilder,
+} from '../../testUtils';
+
+const destination = {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'BLUECORE',
+ Config: {
+ bluecoreNamespace: 'dummy_sandbox',
+ eventsMapping: [
+ {
+ from: 'ABC Searched',
+ to: 'search',
+ },
+ {
+ from: 'testPurchase',
+ to: 'purchase',
+ },
+ {
+ from: 'testboth',
+ to: 'wishlist',
+ },
+ {
+ from: 'testboth',
+ to: 'add_to_cart',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+};
+
+const metadata = {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+};
+
+const commonTraits = {
+ id: 'user@1',
+ age: '22',
+ anonymousId: '9c6bd77ea9da3e68',
+};
+
+const contextWithExternalId = {
+ traits: {
+ ...commonTraits,
+ email: 'abc@gmail.com',
+ },
+ externalId: [{ type: 'bluecoreExternalId', id: '54321' }],
+};
+
+const commonPropsWithProducts = {
+ property1: 'value1',
+ property2: 'value2',
+ products: [
+ {
+ product_id: '123',
+ sku: 'sku123',
+ name: 'Product 1',
+ price: 100,
+ quantity: 2,
+ },
+ {
+ product_id: '124',
+ sku: 'sku124',
+ name: 'Product 2',
+ price: 200,
+ quantity: 3,
+ },
+ ],
+};
+
+const commonPropsWithoutProducts = {
+ property1: 'value1',
+ property2: 'value2',
+ product_id: '123',
+};
+
+const commonOutputHeaders = {
+ 'Content-Type': 'application/json',
+};
+
+const eventEndPoint = 'https://api.bluecore.com/api/track/mobile/v1';
+
+export const trackTestData = [
+ {
+ id: 'bluecore-track-test-1',
+ name: 'bluecore',
+ description:
+ 'Track event call with custom event with properties not mapped in destination config. This will be sent with its original name',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain flattened properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'test@rudderstack.com',
+ customer: {
+ age: '22',
+ email: 'test@rudderstack.com',
+ },
+ products: [
+ {
+ name: 'Product 1',
+ price: 100,
+ id: '123',
+ quantity: 2,
+ },
+ {
+ name: 'Product 2',
+ price: 200,
+ id: '124',
+ quantity: 3,
+ },
+ ],
+ },
+ event: 'TestEven001',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-2',
+ name: 'bluecore',
+ description:
+ 'Track event call with custom event without properties not mapped in destination config. This will be sent with its original name',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200. As the event paylaod does not contains products, product array will not be sent',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithoutProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'test@rudderstack.com',
+ customer: {
+ age: '22',
+ email: 'test@rudderstack.com',
+ },
+ },
+ event: 'TestEven001',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-3',
+ name: 'bluecore',
+ description:
+ 'optin event is also considered as a track event, user need to not map it from the UI , it will be sent with the same event name to bluecore',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain flattened properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'optin',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithoutProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'test@rudderstack.com',
+ customer: {
+ age: '22',
+ email: 'test@rudderstack.com',
+ },
+ },
+ event: 'optin',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-4',
+ name: 'bluecore',
+ description:
+ 'unsubscribe event is also considered as a track event, user need to not map it from the UI , it will be sent with the same event name to bluecore',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain flattened properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'unsubscribe',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonPropsWithoutProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: 'test@rudderstack.com',
+ customer: {
+ age: '22',
+ email: 'test@rudderstack.com',
+ },
+ },
+ event: 'unsubscribe',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-track-test-5',
+ name: 'bluecore',
+ description:
+ 'Track event call with with externalId. This will map externalId to distinct_id in the payload',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain flattened properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ metadata,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ userId: 'sajal12',
+ context: contextWithExternalId,
+ properties: commonPropsWithProducts,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ properties: {
+ distinct_id: '54321',
+ customer: {
+ age: '22',
+ email: 'abc@gmail.com',
+ },
+ products: [
+ {
+ name: 'Product 1',
+ price: 100,
+ id: '123',
+ quantity: 2,
+ },
+ {
+ name: 'Product 2',
+ price: 200,
+ id: '124',
+ quantity: 3,
+ },
+ ],
+ },
+ event: 'TestEven001',
+ token: 'dummy_sandbox',
+ },
+ userId: '',
+ }),
+ metadata,
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/bluecore/validationTestData.ts b/test/integrations/destinations/bluecore/validationTestData.ts
new file mode 100644
index 00000000000..5b81f8c95a8
--- /dev/null
+++ b/test/integrations/destinations/bluecore/validationTestData.ts
@@ -0,0 +1,150 @@
+const metadata = {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ destinationId: '',
+};
+
+const outputStatTags = {
+ destType: 'BLUECORE',
+ destinationId: '',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+};
+
+export const validationTestData = [
+ {
+ id: 'bluecore-validation-test-1',
+ name: 'bluecore',
+ description: '[Error]: Check for unsupported message type',
+ scenario: 'Framework',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as we are sending a message type which is not supported by bluecore destination and the error message should be Event type random is not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'BLUECORE',
+ Config: {
+ bluecoreNamespace: 'dummy_sandbox',
+ eventsMapping: [
+ {
+ from: 'ABC Searched',
+ to: 'search',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+ },
+ metadata,
+ message: {
+ userId: 'user123',
+ type: 'random',
+ groupId: 'XUepkK',
+ traits: {
+ subscribe: true,
+ },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'message type random is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type random is not supported',
+ metadata,
+ statTags: outputStatTags,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'bluecore-validation-test-1',
+ name: 'bluecore',
+ description: '[Error]: Check for not finding bluecoreNamespace',
+ scenario: 'Framework',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as bluecoreNamespace is not found in the destination config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'BLUECORE',
+ Config: {
+ eventsMapping: [
+ {
+ from: 'ABC Searched',
+ to: 'search',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+ },
+ metadata: metadata,
+ message: {
+ userId: 'user123',
+ type: 'random',
+ groupId: 'XUepkK',
+ traits: {
+ subscribe: true,
+ },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'message type random is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type random is not supported',
+ metadata,
+ statTags: outputStatTags,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/blueshift/router/data.ts b/test/integrations/destinations/blueshift/router/data.ts
index 7c92ff1d748..7104beb873f 100644
--- a/test/integrations/destinations/blueshift/router/data.ts
+++ b/test/integrations/destinations/blueshift/router/data.ts
@@ -17,9 +17,7 @@ export const data = [
datacenterEU: false,
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
context: {
app: {
@@ -51,9 +49,7 @@ export const data = [
datacenterEU: false,
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
context: {
ip: '14.5.67.21',
@@ -67,16 +63,8 @@ export const data = [
type: 'Android',
attTrackingStatus: 3,
},
- os: {
- name: 'Android',
- version: '9',
- },
- network: {
- bluetooth: false,
- carrier: 'Android',
- cellular: true,
- wifi: true,
- },
+ os: { name: 'Android', version: '9' },
+ network: { bluetooth: false, carrier: 'Android', cellular: true, wifi: true },
address: {
city: 'kolkata',
country: 'India',
@@ -87,9 +75,7 @@ export const data = [
street: 'rajnagar',
},
},
- properties: {
- cookie: '1234abcd-efghijkj-1234kfjadslk-34iu123',
- },
+ properties: { cookie: '1234abcd-efghijkj-1234kfjadslk-34iu123' },
messageId: '34abcd-efghijkj-1234kf',
type: 'track',
event: 'identify',
@@ -104,9 +90,7 @@ export const data = [
datacenterEU: false,
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -116,21 +100,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -157,10 +133,7 @@ export const data = [
msgemail: true,
msgwhatsapp: false,
custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
- custom_mappings: {
- Office: 'Trastkiv',
- Country: 'Russia',
- },
+ custom_mappings: { Office: 'Trastkiv', Country: 'Russia' },
address: {
city: 'kolkata',
country: 'India',
@@ -169,9 +142,7 @@ export const data = [
street: '',
},
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -210,11 +181,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -259,11 +226,7 @@ export const data = [
version: '1',
endpoint: 'https://api.getblueshift.com/api/v1/event',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -307,10 +270,7 @@ export const data = [
msgemail: true,
msgwhatsapp: false,
custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
- custom_mappings: {
- Office: 'Trastkiv',
- Country: 'Russia',
- },
+ custom_mappings: { Office: 'Trastkiv', Country: 'Russia' },
address: {
city: 'kolkata',
country: 'India',
@@ -325,11 +285,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/bqstream/router/data.ts b/test/integrations/destinations/bqstream/router/data.ts
index e44ce4af15f..3c77f2c62f4 100644
--- a/test/integrations/destinations/bqstream/router/data.ts
+++ b/test/integrations/destinations/bqstream/router/data.ts
@@ -14,18 +14,10 @@ export const data = [
type: 'track',
event: 'insert product',
userId: 'user12345',
-
- properties: {
- count: 10,
- productId: 10,
- productName: 'Product-10',
- },
+ properties: { count: 10, productId: 10, productName: 'Product-10' },
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
},
- metadata: {
- jobId: 1,
- userId: 'user12345',
- },
+ metadata: { jobId: 1, userId: 'user12345' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -36,7 +28,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -46,16 +37,9 @@ export const data = [
type: 'track',
event: 'insert product',
userId: 'user12345',
- properties: {
- count: 20,
- productId: 20,
- productName: 'Product-20',
- },
- },
- metadata: {
- jobId: 2,
- userId: 'user12345',
+ properties: { count: 20, productId: 20, productName: 'Product-20' },
},
+ metadata: { jobId: 2, userId: 'user12345' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -66,7 +50,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -76,17 +59,10 @@ export const data = [
type: 'identify',
event: 'insert product',
userId: 'user12345',
- traits: {
- count: 20,
- productId: 20,
- productName: 'Product-20',
- },
+ traits: { count: 20, productId: 20, productName: 'Product-20' },
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
},
- metadata: {
- jobId: 3,
- userId: 'user12345',
- },
+ metadata: { jobId: 3, userId: 'user12345' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -97,7 +73,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -107,17 +82,10 @@ export const data = [
type: 'track',
event: 'insert product',
userId: 'user12345',
- properties: {
- count: 20,
- productId: 20,
- productName: 'Product-20',
- },
+ properties: { count: 20, productId: 20, productName: 'Product-20' },
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
},
- metadata: {
- jobId: 5,
- userId: 'user123',
- },
+ metadata: { jobId: 5, userId: 'user123' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -128,7 +96,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -138,17 +105,10 @@ export const data = [
type: 'track',
event: 'insert product',
userId: 'user12345',
- properties: {
- count: 20,
- productId: 20,
- productName: 'Product-20',
- },
+ properties: { count: 20, productId: 20, productName: 'Product-20' },
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
},
- metadata: {
- jobId: 6,
- userId: 'user124',
- },
+ metadata: { jobId: 6, userId: 'user124' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -159,22 +119,13 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
},
{
- message: {
- type: 'track',
- event: 'insert product',
-
- userId: 'user12345',
- },
- metadata: {
- jobId: 7,
- userId: 'user124',
- },
+ message: { type: 'track', event: 'insert product', userId: 'user12345' },
+ metadata: { jobId: 7, userId: 'user124' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -185,21 +136,13 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
},
{
- message: {
- type: 'track',
- event: 'insert product',
- userId: 'user12345',
- },
- metadata: {
- jobId: 8,
- userId: 'user125',
- },
+ message: { type: 'track', event: 'insert product', userId: 'user12345' },
+ metadata: { jobId: 8, userId: 'user125' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -210,7 +153,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -219,14 +161,9 @@ export const data = [
message: {
type: 'identify',
event: 'insert product',
-
userId: 'user12345',
-
context: {
- os: {
- Name: '',
- version: '',
- },
+ os: { Name: '', version: '' },
app: {
Name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -253,27 +190,16 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- Name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { Name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
},
-
- traits: {
- count: 20,
- productId: 20,
- productName: 'Product-20',
- },
+ traits: { count: 20, productId: 20, productName: 'Product-20' },
receivedAt: '2021-11-15T14:06:42.497+05:30',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
},
- metadata: {
- jobId: 9,
- userId: 'user125',
- },
+ metadata: { jobId: 9, userId: 'user125' },
destination: {
Config: {
rudderAccountId: '1z8LpaSAuFR9TPWL6fECZfjmRa-',
@@ -284,7 +210,6 @@ export const data = [
eventDelivery: true,
eventDeliveryTS: 1636965406397,
},
-
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
@@ -306,30 +231,10 @@ export const data = [
datasetId: 'gc_dataset',
projectId: 'gc-project-id',
properties: [
- {
- count: 10,
- insertId: '10',
- productId: 10,
- productName: 'Product-10',
- },
- {
- count: 20,
- insertId: '20',
- productId: 20,
- productName: 'Product-20',
- },
- {
- count: 20,
- insertId: '20',
- productId: 20,
- productName: 'Product-20',
- },
- {
- count: 20,
- insertId: '20',
- productId: 20,
- productName: 'Product-20',
- },
+ { count: 10, insertId: '10', productId: 10, productName: 'Product-10' },
+ { count: 20, insertId: '20', productId: 20, productName: 'Product-20' },
+ { count: 20, insertId: '20', productId: 20, productName: 'Product-20' },
+ { count: 20, insertId: '20', productId: 20, productName: 'Product-20' },
],
tableId: 'gc_table',
},
@@ -347,22 +252,10 @@ export const data = [
Name: 'bqstream test',
},
metadata: [
- {
- jobId: 1,
- userId: 'user12345',
- },
- {
- jobId: 2,
- userId: 'user12345',
- },
- {
- jobId: 5,
- userId: 'user123',
- },
- {
- jobId: 6,
- userId: 'user124',
- },
+ { jobId: 1, userId: 'user12345' },
+ { jobId: 2, userId: 'user12345' },
+ { jobId: 5, userId: 'user123' },
+ { jobId: 6, userId: 'user124' },
],
statusCode: 200,
},
@@ -383,14 +276,8 @@ export const data = [
},
error: 'Invalid payload for the destination',
metadata: [
- {
- jobId: 7,
- userId: 'user124',
- },
- {
- jobId: 8,
- userId: 'user125',
- },
+ { jobId: 7, userId: 'user124' },
+ { jobId: 8, userId: 'user125' },
],
statTags: {
destType: 'BQSTREAM',
@@ -417,17 +304,10 @@ export const data = [
ID: '1WXjIHpu7ETXgjfiGPW3kCUgZFR',
Name: 'bqstream test',
},
-
error: 'Message Type not supported: identify',
metadata: [
- {
- jobId: 3,
- userId: 'user12345',
- },
- {
- jobId: 9,
- userId: 'user125',
- },
+ { jobId: 3, userId: 'user12345' },
+ { jobId: 9, userId: 'user125' },
],
statTags: {
destType: 'BQSTREAM',
diff --git a/test/integrations/destinations/branch/processor/data.ts b/test/integrations/destinations/branch/processor/data.ts
index 9fed3542358..dc1bdd33bca 100644
--- a/test/integrations/destinations/branch/processor/data.ts
+++ b/test/integrations/destinations/branch/processor/data.ts
@@ -1490,4 +1490,160 @@ export const data = [
},
},
},
+ {
+ name: 'branch',
+ description: 'Map event name to branch standard event name in track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ branchKey: 'test_branch_key',
+ eventsMapping: [
+ {
+ from: 'Order Completed',
+ to: 'PURCHASE',
+ },
+ ],
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Branch Metrics',
+ ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU',
+ Name: 'BRANCH',
+ },
+ Enabled: true,
+ ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI',
+ Name: 'branch test',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'anonId123',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: true,
+ advertisingId: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'anonId123',
+ email: 'test_user@gmail.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'ea5cfab2-3961-4d8a-8187-3d1858c90a9f',
+ originalTimestamp: '2020-01-17T04:53:51.185Z',
+ properties: {
+ name: 't-shirt',
+ revenue: '10',
+ currency: 'USD',
+ key1: 'value1',
+ key2: 'value2',
+ order_id: 'order123',
+ },
+ receivedAt: '2020-01-17T10:23:52.688+05:30',
+ request_ip: '[::1]:64059',
+ sentAt: '2020-01-17T04:53:52.667Z',
+ timestamp: '2020-01-17T10:23:51.206+05:30',
+ type: 'track',
+ userId: 'userId123',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api2.branch.io/v2/event/standard',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ branch_key: 'test_branch_key',
+ name: 'PURCHASE',
+ content_items: [
+ {
+ $product_name: 't-shirt',
+ },
+ ],
+ event_data: {
+ revenue: '10',
+ currency: 'USD',
+ },
+ custom_data: {
+ key1: 'value1',
+ key2: 'value2',
+ order_id: 'order123',
+ },
+ user_data: {
+ os: 'iOS',
+ os_version: '14.4.1',
+ app_version: '1.0.0',
+ screen_dpi: 2,
+ developer_identity: 'userId123',
+ idfa: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ idfv: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ limit_ad_tracking: false,
+ model: 'AOSP on IA Emulator',
+ user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anonId123',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/branch/router/data.ts b/test/integrations/destinations/branch/router/data.ts
index 4c87145b7ea..6451c463f18 100644
--- a/test/integrations/destinations/branch/router/data.ts
+++ b/test/integrations/destinations/branch/router/data.ts
@@ -11,10 +11,7 @@ export const data = [
input: [
{
destination: {
- Config: {
- branchKey: '',
- useNativeSDK: false,
- },
+ Config: { branchKey: '', useNativeSDK: false },
DestinationDefinition: {
DisplayName: 'Branch Metrics',
ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU',
@@ -25,9 +22,7 @@ export const data = [
Name: 'branch test',
Transformations: [],
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -39,34 +34,19 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: 'iOS',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ os: { name: 'iOS', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'product added',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'ea5cfab2-3961-4d8a-8187-3d1858c90a9f',
originalTimestamp: '2020-01-17T04:53:51.185Z',
- properties: {
- name: 'sampath',
- },
+ properties: { name: 'sampath' },
receivedAt: '2020-01-17T10:23:52.688+05:30',
request_ip: '[::1]:64059',
sentAt: '2020-01-17T04:53:52.667Z',
@@ -77,10 +57,7 @@ export const data = [
},
{
destination: {
- Config: {
- branchKey: '',
- useNativeSDK: false,
- },
+ Config: { branchKey: '', useNativeSDK: false },
DestinationDefinition: {
DisplayName: 'Branch Metrics',
ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU',
@@ -91,9 +68,7 @@ export const data = [
Name: 'branch test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -105,28 +80,15 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: 'iOS',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: 'iOS', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ integrations: { All: true },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
messageId: 'ea5cfab2-3961-4d8a-8187-3d1858c90a9f',
originalTimestamp: '2020-01-17T04:53:51.185Z',
receivedAt: '2020-01-17T10:23:52.688+05:30',
@@ -154,20 +116,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api2.branch.io/v2/event/standard',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
branch_key: '',
name: 'ADD_TO_CART',
- content_items: [
- {
- $product_name: 'sampath',
- },
- ],
+ content_items: [{ $product_name: 'sampath' }],
user_data: {
os: 'iOS',
os_version: '',
@@ -185,18 +140,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- branchKey: '',
- useNativeSDK: false,
- },
+ Config: { branchKey: '', useNativeSDK: false },
DestinationDefinition: {
DisplayName: 'Branch Metrics',
ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU',
@@ -214,19 +162,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api2.branch.io/v2/event/custom',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
branch_key: '',
name: 'sampath',
- custom_data: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ custom_data: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
content_items: [{}],
user_data: {
os: 'iOS',
@@ -245,18 +187,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- branchKey: '',
- useNativeSDK: false,
- },
+ Config: { branchKey: '', useNativeSDK: false },
DestinationDefinition: {
DisplayName: 'Branch Metrics',
ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU',
diff --git a/test/integrations/destinations/braze/dataDelivery/business.ts b/test/integrations/destinations/braze/dataDelivery/business.ts
new file mode 100644
index 00000000000..4997c5ffaeb
--- /dev/null
+++ b/test/integrations/destinations/braze/dataDelivery/business.ts
@@ -0,0 +1,377 @@
+import { ProxyMetdata } from '../../../../../src/types';
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+
+const BRAZE_USERS_TRACK_ENDPOINT = 'https://rest.iad-03.braze.com/users/track';
+
+const partner = 'RudderStack';
+
+const headers = {
+ Accept: 'application/json',
+ Authorization: 'Bearer api_key',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+};
+
+const BrazeEvent1 = {
+ name: 'Product List Viewed',
+ time: '2023-11-30T21:48:45.634Z',
+ properties: {
+ products: [
+ {
+ sku: '23-04-52-62-01-18',
+ name: 'Broman Hoodie',
+ price: '97.99',
+ variant: [
+ {
+ id: 39653520310368,
+ sku: '23-04-52-62-01-18',
+ grams: 0,
+ price: '97.99',
+ title: '(SM)',
+ weight: 0,
+ option1: '(SM)',
+ taxable: true,
+ position: 1,
+ tax_code: '',
+ created_at: '2023-05-18T12:56:22-06:00',
+ product_id: 6660780884064,
+ updated_at: '2023-11-30T15:48:43-06:00',
+ weight_unit: 'kg',
+ quantity_rule: {
+ min: 1,
+ increment: 1,
+ },
+ compare_at_price: '139.99',
+ inventory_policy: 'deny',
+ requires_shipping: true,
+ inventory_quantity: 8,
+ fulfillment_service: 'manual',
+ inventory_management: 'shopify',
+ quantity_price_breaks: [],
+ old_inventory_quantity: 8,
+ },
+ ],
+ category: '62 OTHER/RETRO',
+ currency: 'CAD',
+ product_id: 6660780884064,
+ },
+ {
+ sku: '23-04-08-61-01-18',
+ name: 'Kipling Camo Hoodie',
+ price: '69.99',
+ variant: [
+ {
+ id: 39672628740192,
+ sku: '23-04-08-61-01-18',
+ grams: 0,
+ price: '69.99',
+ title: '(SM)',
+ weight: 0,
+ option1: '(SM)',
+ taxable: true,
+ position: 1,
+ tax_code: '',
+ created_at: '2023-06-28T12:52:56-06:00',
+ product_id: 6666835853408,
+ updated_at: '2023-11-30T15:48:43-06:00',
+ weight_unit: 'kg',
+ quantity_rule: {
+ min: 1,
+ increment: 1,
+ },
+ compare_at_price: '99.99',
+ inventory_policy: 'deny',
+ requires_shipping: true,
+ inventory_quantity: 8,
+ fulfillment_service: 'manual',
+ inventory_management: 'shopify',
+ quantity_price_breaks: [],
+ old_inventory_quantity: 8,
+ },
+ ],
+ category: 'Misc',
+ currency: 'CAD',
+ product_id: 6666835853408,
+ },
+ ],
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'ab7de609-9bec-8e1c-42cd-084a1cd93a4e',
+ alias_label: 'rudder_id',
+ },
+};
+
+const BrazeEvent2 = {
+ name: 'Add to Cart',
+ time: '2020-01-24T11:59:02.403+05:30',
+ properties: {
+ revenue: 50,
+ },
+ external_id: 'mickeyMouse',
+};
+
+const BrazePurchaseEvent = {
+ product_id: '507f1f77bcf86cd799439011',
+ price: 0,
+ currency: 'USD',
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+};
+
+const metadataArray = [generateMetadata(1), generateMetadata(2), generateMetadata(3)];
+
+const errorMessages = {
+ message_1: '{"events_processed":2,"purchases_processed":1,"message":"success"}',
+ message_2:
+ '{"events_processed":1,"message":"success","errors":[{"type":"\'external_id\', \'braze_id\', \'user_alias\', \'email\' or \'phone\' is required","input_array":"events","index":1},{"type":"\'quantity\' is not valid","input_array":"purchases","index":0}]}',
+ message_3:
+ '{"message":"Valid data must be provided in the \'attributes\', \'events\', or \'purchases\' fields.","errors":[{"type":"\'external_id\', \'braze_id\', \'user_alias\', \'email\' or \'phone\' is required","input_array":"events","index":0},{"type":"\'external_id\', \'braze_id\', \'user_alias\', \'email\' or \'phone\' is required","input_array":"events","index":1},{"type":"\'quantity\' is not valid","input_array":"purchases","index":0}]}',
+};
+
+const expectedStatTags = {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'BRAZE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+};
+
+export const testScenariosForV1API: ProxyV1TestData[] = [
+ {
+ id: 'braze_v1_scenario_1',
+ name: 'braze',
+ description:
+ '[Proxy v1 API] :: Test for a valid request - 2 events and 1 purchase event are sent where the destination responds with 200 without any error',
+ successCriteria: 'Should return 200 with no error with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ partner,
+ events: [BrazeEvent1, BrazeEvent2],
+ purchases: [BrazePurchaseEvent],
+ },
+ headers,
+ endpoint: `${BRAZE_USERS_TRACK_ENDPOINT}/valid_scenario1`,
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: errorMessages.message_1,
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ {
+ error: errorMessages.message_1,
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ {
+ error: errorMessages.message_1,
+ statusCode: 200,
+ metadata: generateMetadata(3),
+ },
+ ],
+ status: 200,
+ message: 'Request for braze Processed Successfully',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_scenario_2',
+ name: 'braze',
+ description:
+ '[Proxy v1 API] :: Test for a invalid request - 2 events and 1 purchase event are sent where the destination responds with 200 with error for a one of the event and the purchase event',
+ successCriteria: 'Should return 200 with error for one of the event and the purchase event',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ partner,
+ events: [{ ...BrazeEvent1, user_alias: undefined }, BrazeEvent2], // modifying first event to be invalid
+ purchases: [{ ...BrazePurchaseEvent, quantity: 'invalid quantity' }], // modifying purchase event to be invalid
+ },
+ headers,
+ endpoint: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario1`,
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: errorMessages.message_2,
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ {
+ error: errorMessages.message_2,
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ {
+ error: errorMessages.message_2,
+ statusCode: 200,
+ metadata: generateMetadata(3),
+ },
+ ],
+ status: 200,
+ message: 'Request for braze Processed Successfully',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_scenario_3',
+ name: 'braze',
+ description: '[Proxy v1 API] :: Test for an invalid request - all the payloads are invalid',
+ successCriteria: 'Should return 400 with error for all the payloads',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ partner,
+ events: [
+ { ...BrazeEvent1, user_alias: undefined },
+ { ...BrazeEvent2, external_id: undefined },
+ ], // modifying first event to be invalid
+ purchases: [{ ...BrazePurchaseEvent, quantity: 'invalid quantity' }], // modifying purchase event to be invalid
+ },
+ headers,
+ endpoint: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario2`,
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: errorMessages.message_3,
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ {
+ error: errorMessages.message_3,
+ statusCode: 400,
+ metadata: generateMetadata(2),
+ },
+ {
+ error: errorMessages.message_3,
+ statusCode: 400,
+ metadata: generateMetadata(3),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 400',
+ status: 400,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_scenario_4',
+ name: 'braze',
+ description: '[Proxy v1 API] :: Test for invalid auth scneario',
+ successCriteria: 'Should return 400 for all the payloads',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ partner,
+ events: [BrazeEvent1, BrazeEvent2],
+ purchases: [BrazePurchaseEvent],
+ },
+ headers,
+ endpoint: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario3`,
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '{"message":"Invalid API Key"}',
+ statusCode: 401,
+ metadata: generateMetadata(1),
+ },
+ {
+ error: '{"message":"Invalid API Key"}',
+ statusCode: 401,
+ metadata: generateMetadata(2),
+ },
+ {
+ error: '{"message":"Invalid API Key"}',
+ statusCode: 401,
+ metadata: generateMetadata(3),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 401',
+ status: 401,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/braze/dataDelivery/data.ts b/test/integrations/destinations/braze/dataDelivery/data.ts
index 49a6d607e5f..2596a4b9592 100644
--- a/test/integrations/destinations/braze/dataDelivery/data.ts
+++ b/test/integrations/destinations/braze/dataDelivery/data.ts
@@ -1,6 +1,8 @@
import MockAdapter from 'axios-mock-adapter';
+import { testScenariosForV1API } from './business';
+import { otherScenariosV1 } from './other';
-export const data = [
+export const existingTestData = [
{
name: 'braze',
description: 'Test 0',
@@ -544,6 +546,7 @@ export const data = [
status: 200,
body: {
output: {
+ message: 'Request for braze Processed Successfully',
response: [
{
error: '{"aliases_processed":1,"message":"success"}',
@@ -563,6 +566,7 @@ export const data = [
},
},
],
+ status: 201,
},
},
},
@@ -630,6 +634,7 @@ export const data = [
status: 200,
body: {
output: {
+ status: 401,
response: [
{
error: '{"code":400,"message":"Bad Req","status":"Fail Case"}',
@@ -659,7 +664,6 @@ export const data = [
module: 'destination',
workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
},
- authErrorCategory: '',
message: 'Request failed for braze with status: 401',
},
},
@@ -770,6 +774,7 @@ export const data = [
status: 200,
body: {
output: {
+ status: 401,
response: [
{
error:
@@ -836,7 +841,6 @@ export const data = [
module: 'destination',
workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
},
- authErrorCategory: '',
message: 'Request failed for braze with status: 401',
},
},
@@ -844,3 +848,5 @@ export const data = [
},
},
];
+
+export const data = [...existingTestData, ...testScenariosForV1API, ...otherScenariosV1];
diff --git a/test/integrations/destinations/braze/dataDelivery/other.ts b/test/integrations/destinations/braze/dataDelivery/other.ts
new file mode 100644
index 00000000000..9353899a654
--- /dev/null
+++ b/test/integrations/destinations/braze/dataDelivery/other.ts
@@ -0,0 +1,204 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+
+const expectedStatTags = {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'BRAZE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+};
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'braze_v1_other_scenario_1',
+ name: 'braze',
+ description:
+ '[Proxy v1 API] :: Scenario for testing Service Unavailable error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_service_not_available',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"message":"Service Unavailable","description":"The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later."}}',
+ statusCode: 503,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 503',
+ status: 503,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_other_scenario_2',
+ name: 'braze',
+ description: '[Proxy v1 API] :: Scenario for testing Internal Server error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_internal_server_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Internal Server Error"',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 500',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_other_scenario_3',
+ name: 'braze',
+ description: '[Proxy v1 API] :: Scenario for testing Gateway Time Out error from destination',
+ successCriteria: 'Should return 504 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_gateway_time_out',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Gateway Timeout"',
+ statusCode: 504,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 504',
+ status: 504,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_other_scenario_4',
+ name: 'braze',
+ description: '[Proxy v1 API] :: Scenario for testing null response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_response',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 500',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'braze_v1_other_scenario_5',
+ name: 'braze',
+ description:
+ '[Proxy v1 API] :: Scenario for testing null and no status response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_and_no_status',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ message: 'Request failed for braze with status: 500',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/braze/network.ts b/test/integrations/destinations/braze/network.ts
index 3db50ca32cc..ae093ce1f48 100644
--- a/test/integrations/destinations/braze/network.ts
+++ b/test/integrations/destinations/braze/network.ts
@@ -1,70 +1,4 @@
const dataDeliveryMocksData = [
- {
- httpReq: {
- url: 'https://api.amplitude.com/2/httpapi/test5',
- data: {
- api_key: 'c9d8a13b8bcab46a547f7be5200c483d',
- events: [
- {
- app_name: 'Rudder-CleverTap_Example',
- app_version: '1.0',
- time: 1619006730330,
- user_id: 'gabi_userId_45',
- user_properties: {
- Residence: 'Shibuya',
- city: 'Tokyo',
- country: 'JP',
- email: 'gabi29@gmail.com',
- gender: 'M',
- name: 'User2 Gabi2',
- organization: 'Company',
- region: 'ABC',
- title: 'Owner',
- zip: '100-0001',
- },
- },
- ],
- options: { min_id_length: 1 },
- },
- params: { destination: 'any' },
- headers: { 'Content-Type': 'application/json', 'User-Agent': 'RudderLabs' },
- method: 'POST',
- },
- httpRes: { response: {} },
- },
- {
- httpReq: {
- url: 'https://api.amplitude.com/2/httpapi/test6',
- data: {
- api_key: 'c9d8a13b8bcab46a547f7be5200c483d',
- events: [
- {
- app_name: 'Rudder-CleverTap_Example',
- app_version: '1.0',
- time: 1619006730330,
- user_id: 'gabi_userId_45',
- user_properties: {
- Residence: 'Shibuya',
- city: 'Tokyo',
- country: 'JP',
- email: 'gabi29@gmail.com',
- gender: 'M',
- name: 'User2 Gabi2',
- organization: 'Company',
- region: 'ABC',
- title: 'Owner',
- zip: '100-0001',
- },
- },
- ],
- options: { min_id_length: 1 },
- },
- params: { destination: 'any' },
- headers: { 'Content-Type': 'application/json', 'User-Agent': 'RudderLabs' },
- method: 'POST',
- },
- httpRes: {},
- },
{
httpReq: {
url: 'https://rest.iad-03.braze.com/users/identify/test1',
@@ -463,5 +397,231 @@ const deleteNwData = [
status: 401,
},
},
+ {
+ httpReq: {
+ method: 'post',
+ data: {
+ external_ids: ['braze_test_user', 'user@50'],
+ user_aliases: [
+ { alias_name: '77e278c9-e984-4cdd-950c-cd0b61befd03', alias_label: 'rudder_id' },
+ { alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca', alias_label: 'rudder_id' },
+ ],
+ },
+ headers: { Authorization: 'Bearer dummyApiKey' },
+ url: 'https://rest.iad-03.braze.com/users/export/ids',
+ },
+ httpRes: {
+ data: {
+ users: [
+ {
+ created_at: '2023-03-17T20:51:58.297Z',
+ external_id: 'braze_test_user',
+ user_aliases: [],
+ appboy_id: '6414d2ee33326e3354e3040b',
+ braze_id: '6414d2ee33326e3354e3040b',
+ first_name: 'Jackson',
+ last_name: 'Miranda',
+ random_bucket: 8134,
+ email: 'jackson24miranda@gmail.com',
+ custom_attributes: {
+ pwa: false,
+ is_registered: true,
+ last_identify: 'GOOGLE_SIGN_IN',
+ account_region: 'ON',
+ is_pickup_selected: 'false',
+ has_tradein_attempt: false,
+ custom_obj_attr: {
+ key1: 'value1',
+ key2: 'value2',
+ key3: 'value3',
+ },
+ custom_arr: [1, 2, 'str1'],
+ },
+ custom_events: [
+ {
+ name: 'Sign In Completed',
+ first: '2023-03-10T18:36:05.028Z',
+ last: '2023-03-10T18:36:05.028Z',
+ count: 2,
+ },
+ ],
+ total_revenue: 0,
+ push_subscribe: 'subscribed',
+ email_subscribe: 'subscribed',
+ },
+ ],
+ },
+ message: 'success',
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://rest.iad-01.braze.com/users/identify',
+ },
+ httpRes: {
+ response: {},
+ message: 'success',
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://rest.iad-03.braze.com/users/identify',
+ },
+ httpRes: {
+ response: {},
+ message: 'success',
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://rest.iad-03.braze.com/users/track/testV1',
+ data: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: '123@a.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ external_id: '456345345',
+ },
+ {
+ email: '123@a.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ external_id: '456345345',
+ },
+ {
+ email: '123@a.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ external_id: '456345345',
+ },
+ ],
+ },
+ params: { destination: 'braze' },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer api_key',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: '{"message":"Valid data must be provided in the \'attributes\', \'events\', or \'purchases\' fields.","errors":[{"type":"The value provided for the \'email\' field is not a valid email.","input_array":"attributes","index":0},{"type":"The value provided for the \'email\' field is not a valid email.","input_array":"attributes","index":1}]}',
+ status: 401,
+ },
+ },
+];
+
+const BRAZE_USERS_TRACK_ENDPOINT = 'https://rest.iad-03.braze.com/users/track';
+
+// New Mocks for Braze
+const updatedDataDeliveryMocksData = [
+ {
+ description:
+ 'Mock response from destination depicting a valid request for 2 valid events and 1 purchase event',
+ httpReq: {
+ url: `${BRAZE_USERS_TRACK_ENDPOINT}/valid_scenario1`,
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ events_processed: 2,
+ purchases_processed: 1,
+ message: 'success',
+ },
+ status: 200,
+ },
+ },
+
+ {
+ description:
+ 'Mock response from destination depicting a request with 1 valid and 1 invalid event and 1 invalid purchase event',
+ httpReq: {
+ url: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario1`,
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ events_processed: 1,
+ message: 'success',
+ errors: [
+ {
+ type: "'external_id', 'braze_id', 'user_alias', 'email' or 'phone' is required",
+ input_array: 'events',
+ index: 1,
+ },
+ {
+ type: "'quantity' is not valid",
+ input_array: 'purchases',
+ index: 0,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+
+ {
+ description:
+ 'Mock response from destination depicting a request with all the payloads are invalid',
+ httpReq: {
+ url: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario2`,
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ message:
+ "Valid data must be provided in the 'attributes', 'events', or 'purchases' fields.",
+ errors: [
+ {
+ type: "'external_id', 'braze_id', 'user_alias', 'email' or 'phone' is required",
+ input_array: 'events',
+ index: 0,
+ },
+ {
+ type: "'external_id', 'braze_id', 'user_alias', 'email' or 'phone' is required",
+ input_array: 'events',
+ index: 1,
+ },
+ {
+ type: "'quantity' is not valid",
+ input_array: 'purchases',
+ index: 0,
+ },
+ ],
+ },
+ status: 400,
+ },
+ },
+ {
+ description: 'Mock response from destination depicting a request with invalid credentials',
+ httpReq: {
+ url: `${BRAZE_USERS_TRACK_ENDPOINT}/invalid_scenario3`,
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ message: 'Invalid API Key',
+ },
+ status: 401,
+ },
+ },
+];
+export const networkCallsData = [
+ ...deleteNwData,
+ ...dataDeliveryMocksData,
+ ...updatedDataDeliveryMocksData,
];
-export const networkCallsData = [...deleteNwData, ...dataDeliveryMocksData];
diff --git a/test/integrations/destinations/braze/processor/data.ts b/test/integrations/destinations/braze/processor/data.ts
new file mode 100644
index 00000000000..58c54bb232b
--- /dev/null
+++ b/test/integrations/destinations/braze/processor/data.ts
@@ -0,0 +1,3866 @@
+export const data = [
+ {
+ name: 'braze',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ closed_at: null,
+ orderTotal: 0,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ closed_at: null,
+ orderTotal: 0,
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 1: ERROR - No attributes found to update the user profile',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: 'mickeyMouse',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'No attributes found to update the user profile',
+ statTags: {
+ destType: 'BRAZE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ },
+ messageId: 'a6a0ad5a-bd26-4f19-8f75-38484e580fc7',
+ originalTimestamp: '2020-01-24T06:29:02.364Z',
+ properties: {
+ currency: 'USD',
+ revenue: 50,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53710',
+ sentAt: '2020-01-24T06:29:02.364Z',
+ timestamp: '2020-01-24T11:59:02.403+05:30',
+ type: 'track',
+ userId: 'mickeyMouse',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2020-01-24T11:59:02.403+05:30',
+ properties: {
+ revenue: 50,
+ },
+ external_id: 'mickeyMouse',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'mickeyMouse',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'mickey@disney.com',
+ closed_at: null,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ },
+ messageId: 'a6a0ad5a-bd26-4f19-8f75-38484e580fc7',
+ originalTimestamp: '2020-01-24T06:29:02.364Z',
+ properties: {
+ currency: 'USD',
+ revenue: 50,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53710',
+ sentAt: '2020-01-24T06:29:02.364Z',
+ timestamp: '2020-01-24T11:59:02.403+05:30',
+ type: 'track',
+ userId: 'mickeyMouse',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ closed_at: null,
+ external_id: 'mickeyMouse',
+ },
+ ],
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2020-01-24T11:59:02.403+05:30',
+ properties: {
+ revenue: 50,
+ },
+ external_id: 'mickeyMouse',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'mickeyMouse',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'eu-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
+ originalTimestamp: '2020-01-24T06:29:02.358Z',
+ properties: {
+ path: '/tests/html/index2.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index2.html',
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53708',
+ sentAt: '2020-01-24T06:29:02.359Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'page',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ events: [
+ {
+ name: 'Page Viewed',
+ time: '2020-01-24T11:59:02.402+05:30',
+ properties: {
+ path: '/tests/html/index2.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index2.html',
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ enableNestedArrayOperations: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstName: 'Mickey',
+ gender: 'woman',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ },
+ messageId: 'a6a0ad5a-bd26-4f19-8f75-38484e580fc7',
+ originalTimestamp: '2020-01-24T06:29:02.364Z',
+ properties: {
+ currency: 'USD',
+ revenue: 50,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53710',
+ sentAt: '2020-01-24T06:29:02.364Z',
+ timestamp: '2020-01-24T11:59:02.403+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ first_name: 'Mickey',
+ gender: 'F',
+ city: 'Disney',
+ country: 'USA',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2020-01-24T11:59:02.403+05:30',
+ properties: {
+ revenue: 50,
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'KM Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 3,
+ product_id: '505bd76785ebb509fc183733',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ events: [
+ {
+ name: 'KM Order Completed',
+ time: '2020-01-24T11:59:02.402+05:30',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 3,
+ product_id: '505bd76785ebb509fc183733',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2020-09-14T12:09:37.491Z',
+ userId: 'Randomuser2222',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.3',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ path: '/Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ title: 'Fullstory Test',
+ search: '',
+ referrer: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'manashi@gmaiol.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.3',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
+ },
+ messageId: '24ecc509-ce3e-473c-8483-ba1ea2c195cb',
+ properties: {
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ key1: {
+ key11: 'value1',
+ key22: 'value2',
+ },
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ currency78: 'USD',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price23: 3,
+ category: 'Games',
+ quantity: 2,
+ currency78: 'USD',
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ },
+ anonymousId: 'c6ff1462-b692-43d6-8f6a-659efedc99ea',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-14T12:09:37.491Z',
+ },
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Invalid Order Completed event: Message properties and product at index: 0 is missing currency',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'BRAZE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'group',
+ event: 'Order Completed',
+ sentAt: '2020-09-14T12:09:37.491Z',
+ userId: 'Randomuser2222',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.3',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ path: '/Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ title: 'Fullstory Test',
+ search: '',
+ referrer: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'manashi@gmaiol.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.3',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
+ },
+ messageId: '24ecc509-ce3e-473c-8483-ba1ea2c195cb',
+ traits: {
+ groupId: '1234',
+ },
+ anonymousId: 'c6ff1462-b692-43d6-8f6a-659efedc99ea',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-14T12:09:37.491Z',
+ },
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ ab_rudder_group_1234: true,
+ external_id: 'Randomuser2222',
+ },
+ ],
+ partner: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'Randomuser2222',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'external_id',
+ id: 'mickey@disney.com',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ home_city: 'Disney',
+ country: 'USA',
+ first_name: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ home_city: 'Disney',
+ country: 'USA',
+ external_id: 'mickey@disney.com',
+ first_name: 'Mickey',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'mickey@disney.com',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 0,
+ product_id: '505bd76785ebb509fc183733',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ purchases: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ price: 0,
+ currency: 'USD',
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ {
+ product_id: '505bd76785ebb509fc183733',
+ price: 0,
+ currency: 'USD',
+ quantity: 2,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ partner: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 10,
+ product_id: '505bd76785ebb509fc183733',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ purchases: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ price: 0,
+ currency: 'USD',
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ {
+ product_id: '505bd76785ebb509fc183733',
+ price: 10,
+ currency: 'USD',
+ quantity: 2,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ partner: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ enableNestedArrayOperations: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ cars2: {
+ update: [
+ {
+ age: 30,
+ id: 2,
+ identifier: 'id',
+ name: 'abcd',
+ },
+ {
+ age: 27,
+ id: 1,
+ identifier: 'id',
+ name: 'abcd',
+ },
+ ],
+ },
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstName: 'Mickey',
+ gender: 'woman',
+ pets: {
+ add: [
+ {
+ age: 27,
+ id: 1,
+ name: 'abc',
+ },
+ ],
+ remove: [
+ {
+ id: 3,
+ identifier: 'id',
+ },
+ {
+ id: 4,
+ identifier: 'id',
+ },
+ ],
+ update: [
+ {
+ age: 27,
+ id: 2,
+ identifier: 'id',
+ name: 'abc',
+ },
+ ],
+ },
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ },
+ messageId: '89140820-c187-4e62-9599-3c633771ee58',
+ originalTimestamp: '2023-03-14T02:06:26.501+05:30',
+ properties: {
+ currency: 'USD',
+ mergeObjectsUpdateOperation: false,
+ revenue: 50,
+ },
+ receivedAt: '2023-03-14T02:06:22.433+05:30',
+ request_ip: '[::1]',
+ rudderId: '2686e376-7e08-42f7-8edc-ff67eb238a91',
+ sentAt: '2023-03-14T02:06:26.501+05:30',
+ timestamp: '2023-03-14T02:06:22.432+05:30',
+ type: 'track',
+ userId: 'finalUserTestCA',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ first_name: 'Mickey',
+ gender: 'F',
+ cars2: {
+ $update: [
+ {
+ $identifier_key: 'id',
+ $identifier_value: 2,
+ $new_object: {
+ age: 30,
+ name: 'abcd',
+ },
+ },
+ {
+ $identifier_key: 'id',
+ $identifier_value: 1,
+ $new_object: {
+ age: 27,
+ name: 'abcd',
+ },
+ },
+ ],
+ },
+ city: 'Disney',
+ country: 'USA',
+ pets: {
+ $update: [
+ {
+ $identifier_key: 'id',
+ $identifier_value: 2,
+ $new_object: {
+ age: 27,
+ name: 'abc',
+ },
+ },
+ ],
+ $remove: [
+ {
+ $identifier_key: 'id',
+ $identifier_value: 3,
+ },
+ {
+ $identifier_key: 'id',
+ $identifier_value: 4,
+ },
+ ],
+ $add: [
+ {
+ age: 27,
+ id: 1,
+ name: 'abc',
+ },
+ ],
+ },
+ _merge_objects: false,
+ external_id: 'finalUserTestCA',
+ },
+ ],
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2023-03-14T02:06:22.432+05:30',
+ properties: {
+ mergeObjectsUpdateOperation: false,
+ revenue: 50,
+ },
+ external_id: 'finalUserTestCA',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'finalUserTestCA',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ enableNestedArrayOperations: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ cars: {
+ add: [
+ {
+ age: 27,
+ id: 1,
+ name: 'abc',
+ },
+ ],
+ update: [
+ {
+ age: 30,
+ id: 2,
+ identifier: 'id',
+ name: 'abcd',
+ },
+ {
+ age: 27,
+ id: 1,
+ identifier: 'id',
+ name: 'abcd',
+ },
+ ],
+ },
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstName: 'Mickey',
+ gender: 'woman',
+ pets: [
+ {
+ breed: 'beagle',
+ id: 1,
+ name: 'Gus',
+ type: 'dog',
+ },
+ {
+ breed: 'calico',
+ id: 2,
+ name: 'Gerald',
+ type: 'cat',
+ },
+ ],
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ },
+ messageId: 'd1e049af-913c-46ee-8f5c-5b26966e896f',
+ originalTimestamp: '2023-03-14T02:13:10.758+05:30',
+ properties: {
+ currency: 'USD',
+ mergeObjectsUpdateOperation: false,
+ revenue: 50,
+ },
+ receivedAt: '2023-03-14T02:13:10.519+05:30',
+ request_ip: '[::1]',
+ rudderId: '2686e376-7e08-42f7-8edc-ff67eb238a91',
+ sentAt: '2023-03-14T02:13:10.758+05:30',
+ timestamp: '2023-03-14T02:13:10.518+05:30',
+ type: 'track',
+ userId: 'finalUserTestCA',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ first_name: 'Mickey',
+ gender: 'F',
+ cars: {
+ $update: [
+ {
+ $identifier_key: 'id',
+ $identifier_value: 2,
+ $new_object: {
+ age: 30,
+ name: 'abcd',
+ },
+ },
+ {
+ $identifier_key: 'id',
+ $identifier_value: 1,
+ $new_object: {
+ age: 27,
+ name: 'abcd',
+ },
+ },
+ ],
+ $add: [
+ {
+ age: 27,
+ id: 1,
+ name: 'abc',
+ },
+ ],
+ },
+ city: 'Disney',
+ country: 'USA',
+ pets: [
+ {
+ breed: 'beagle',
+ id: 1,
+ name: 'Gus',
+ type: 'dog',
+ },
+ {
+ breed: 'calico',
+ id: 2,
+ name: 'Gerald',
+ type: 'cat',
+ },
+ ],
+ _merge_objects: false,
+ external_id: 'finalUserTestCA',
+ },
+ ],
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2023-03-14T02:13:10.518+05:30',
+ properties: {
+ mergeObjectsUpdateOperation: false,
+ revenue: 50,
+ },
+ external_id: 'finalUserTestCA',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'finalUserTestCA',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ address: {
+ city: 'Mathura',
+ country: 'India',
+ },
+ email: 'a@gmail.com',
+ phone: '9988123321',
+ firstName: 'anuj',
+ lastName: 'kumar',
+ gender: 'male',
+ birthday: '01/01/1971',
+ avatar: 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: 'Plinth India',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'identify',
+ userId: 'ank101',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ country: 'India',
+ dob: '01/01/1971',
+ email: 'a@gmail.com',
+ first_name: 'anuj',
+ gender: 'M',
+ home_city: 'Mathura',
+ image_url:
+ 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ last_name: 'kumar',
+ phone: '9988123321',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: 'Plinth India',
+ external_id: 'ank101',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'ank101',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ address: {
+ city: 'Mathura',
+ country: 'India',
+ },
+ email: 'a@gmail.com',
+ phone: '9988123321',
+ firstName: 'anuj',
+ lastName: 'kumar',
+ gender: null,
+ birthday: '01/01/1971',
+ avatar: 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: null,
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'identify',
+ userId: 'ank101',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ country: 'India',
+ dob: '01/01/1971',
+ email: 'a@gmail.com',
+ first_name: 'anuj',
+ gender: null,
+ home_city: 'Mathura',
+ image_url:
+ 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ last_name: 'kumar',
+ phone: '9988123321',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: null,
+ external_id: 'ank101',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'ank101',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'US-03',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'alias',
+ previousId: 'userId',
+ userId: 'userMergeTest2',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-03.braze.com/users/merge',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ merge_updates: [
+ {
+ identifier_to_merge: {
+ external_id: 'userId',
+ },
+ identifier_to_keep: {
+ external_id: 'userMergeTest2',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'userMergeTest2',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 18: ERROR - previousId is required for alias call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'US-03',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'alias',
+ userId: 'userMergeTest2',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: '[BRAZE]: previousId is required for alias call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'BRAZE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 19: ERROR - userId is required for alias call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'US-03',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'alias',
+ previousId: 'userMergeTest2',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: '[BRAZE]: userId is required for alias call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'BRAZE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: {
+ sourceType: 'metadata.sourceType',
+ destinationType: 'metadata.destinationType',
+ k8_namespace: 'metadata.namespace',
+ },
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'A@HOTMAIL.COM',
+ phone: '9988123321',
+ firstName: 'anil',
+ lastName: 'kumar',
+ gender: null,
+ birthday: '01/01/1971',
+ avatar: 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: null,
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ request_ip: '[::1]:53709',
+ type: 'identify',
+ userId: 'ank101',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ dob: '01/01/1971',
+ email: 'a@hotmail.com',
+ first_name: 'anil',
+ gender: null,
+ image_url:
+ 'https://i.kym-cdn.com/entries/icons/mobile/000/034/772/anuj-1.jpg',
+ last_name: 'kumar',
+ phone: '9988123321',
+ bio: 'Tech and tension go together',
+ language: 'en-IN',
+ job: 'Director',
+ company: null,
+ external_id: 'ank101',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'ank101',
+ },
+ metadata: {
+ sourceType: 'metadata.sourceType',
+ destinationType: 'metadata.destinationType',
+ k8_namespace: 'metadata.namespace',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: {
+ sourceType: 'metadata.sourceType',
+ destinationType: 'metadata.destinationType',
+ k8_namespace: 'metadata.namespace',
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-1cda-34a9-g962-r2f62df18abc',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-01.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-1cda-34a9-g962-r2f62df18abc',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ purchases: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ price: 0,
+ currency: 'USD',
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-1cda-34a9-g962-r2f62df18abc',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ partner: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-1cda-34a9-g962-r2f62df18abc',
+ },
+ metadata: {
+ sourceType: 'metadata.sourceType',
+ destinationType: 'metadata.destinationType',
+ k8_namespace: 'metadata.namespace',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'group',
+ event: 'Order Completed',
+ sentAt: '2020-09-14T12:09:37.491Z',
+ userId: 'Randomuser2222',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.3',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ path: '/Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ title: 'Fullstory Test',
+ search: '',
+ referrer: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'manashi@gmaiol.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.3',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
+ },
+ messageId: '24ecc509-ce3e-473c-8483-ba1ea2c195cb',
+ groupId: '1234',
+ traits: {
+ phone: '5055077683',
+ subscriptionState: 'subscribed',
+ },
+ anonymousId: 'c6ff1462-b692-43d6-8f6a-659efedc99ea',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-14T12:09:37.491Z',
+ },
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/v2/subscription/status/set',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_groups: [
+ {
+ subscription_group_id: '1234',
+ subscription_state: 'subscribed',
+ external_id: ['Randomuser2222'],
+ phones: ['5055077683'],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 23',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'group',
+ event: 'Order Completed',
+ sentAt: '2020-09-14T12:09:37.491Z',
+ userId: 'Randomuser2222',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.3',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ path: '/Users/manashi/Desktop/rudder-all-sdk-application-testing/Fullstory%20test%20By%20JS%20SDK/braze.html',
+ title: 'Fullstory Test',
+ search: '',
+ referrer: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'manashi@gmaiol.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.3',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
+ },
+ messageId: '24ecc509-ce3e-473c-8483-ba1ea2c195cb',
+ groupId: '1234',
+ traits: {
+ email: 'abc@test.com',
+ subscriptionState: 'unsubscribed',
+ },
+ anonymousId: 'c6ff1462-b692-43d6-8f6a-659efedc99ea',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2020-09-14T12:09:37.491Z',
+ },
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/v2/subscription/status/set',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_groups: [
+ {
+ subscription_group_id: '1234',
+ subscription_state: 'unsubscribed',
+ external_id: ['Randomuser2222'],
+ emails: ['abc@test.com'],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 24',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'braze revenue test',
+ integrations: {
+ All: true,
+ braze: {
+ appId: '123',
+ },
+ },
+ messageId: 'a6a0ad5a-bd26-4f19-8f75-38484e580fc7',
+ originalTimestamp: '2020-01-24T06:29:02.364Z',
+ properties: {
+ currency: 'USD',
+ revenue: 50,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53710',
+ sentAt: '2020-01-24T06:29:02.364Z',
+ timestamp: '2020-01-24T11:59:02.403+05:30',
+ type: 'track',
+ userId: 'mickeyMouse',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ events: [
+ {
+ name: 'braze revenue test',
+ time: '2020-01-24T11:59:02.403+05:30',
+ properties: {
+ revenue: 50,
+ },
+ external_id: 'mickeyMouse',
+ app_id: '123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'mickeyMouse',
+ },
+ metadata: {
+ sourceType: '',
+ destinationType: '',
+ namespace: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 25',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ sendPurchaseEventWithExtraProperties: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439023',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 0,
+ product_id: '505bd76785ebb509fc183724',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ purchases: [
+ {
+ product_id: '507f1f77bcf86cd799439023',
+ price: 0,
+ currency: 'USD',
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ properties: {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ url: 'https://www.example.com/product/path',
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ {
+ product_id: '505bd76785ebb509fc183724',
+ price: 0,
+ currency: 'USD',
+ quantity: 2,
+ time: '2020-01-24T11:59:02.402+05:30',
+ properties: {
+ category: 'Games',
+ name: 'Uno Card Game',
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ partner: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 25: ERROR - Invalid email, email must be a valid string',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 123,
+ firstname: 'Mickey',
+ closed_at: null,
+ orderTotal: 0,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Invalid email, email must be a valid string',
+ statTags: {
+ destType: 'BRAZE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'Test 26',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ sendPurchaseEventWithExtraProperties: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: null,
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ event: 'Order Completed',
+ integrations: {
+ All: true,
+ },
+ messageId: 'aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a',
+ originalTimestamp: '2020-01-24T06:29:02.367Z',
+ properties: {
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ coupon: 'hasbros',
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ products: [
+ {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439023',
+ quantity: 1,
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ },
+ {
+ category: 'Games',
+ name: 'Uno Card Game',
+ price: 0,
+ product_id: '505bd76785ebb509fc183724',
+ quantity: 2,
+ sku: '46493-32',
+ },
+ ],
+ revenue: 25,
+ shipping: 3,
+ subtotal: 22.5,
+ tax: 2,
+ total: 27.5,
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53712',
+ sentAt: '2020-01-24T06:29:02.368Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'track',
+ userId: '',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: [
+ {
+ _update_existing_only: false,
+ city: 'Disney',
+ country: 'USA',
+ email: null,
+ firstname: 'Mickey',
+ user_alias: {
+ alias_label: 'rudder_id',
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ },
+ ],
+ partner: 'RudderStack',
+ purchases: [
+ {
+ _update_existing_only: false,
+ currency: 'USD',
+ price: 0,
+ product_id: '507f1f77bcf86cd799439023',
+ properties: {
+ category: 'Games',
+ image_url: 'https:///www.example.com/product/path.jpg',
+ name: 'Monopoly: 3rd Edition',
+ url: 'https://www.example.com/product/path',
+ },
+ quantity: 1,
+ time: '2020-01-24T11:59:02.402+05:30',
+ user_alias: {
+ alias_label: 'rudder_id',
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ },
+ {
+ _update_existing_only: false,
+ currency: 'USD',
+ price: 0,
+ product_id: '505bd76785ebb509fc183724',
+ properties: {
+ category: 'Games',
+ name: 'Uno Card Game',
+ },
+ quantity: 2,
+ time: '2020-01-24T11:59:02.402+05:30',
+ user_alias: {
+ alias_label: 'rudder_id',
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ files: {},
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/braze/router/data.ts b/test/integrations/destinations/braze/router/data.ts
new file mode 100644
index 00000000000..76201bda411
--- /dev/null
+++ b/test/integrations/destinations/braze/router/data.ts
@@ -0,0 +1,803 @@
+export const data = [
+ {
+ name: 'braze',
+ description: 'simple router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'eu-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
+ locale: 'en-GB',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: { All: true },
+ messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
+ originalTimestamp: '2020-01-24T06:29:02.358Z',
+ properties: {
+ path: '/tests/html/index2.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index2.html',
+ },
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53708',
+ sentAt: '2020-01-24T06:29:02.359Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'page',
+ userId: '',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
+ locale: 'en-GB',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstname: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: { All: true },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ originalTimestamp: '2020-01-24T06:29:02.362Z',
+ receivedAt: '2020-01-24T11:59:02.403+05:30',
+ request_ip: '[::1]:53709',
+ sentAt: '2020-01-24T06:29:02.363Z',
+ timestamp: '2020-01-24T11:59:02.402+05:30',
+ type: 'identify',
+ userId: '',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ anonymousId: '56yrtsdfgbgxcb-22b4-401d-aae5-1b994be9a969',
+ groupId: 'c90f0fd2-2a02-4f2f-bf07-7e7d2c2ed2b1',
+ traits: { phone: '5055077683', subscriptionState: 'subscribed' },
+ userId: 'user123',
+ type: 'group',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ message: {
+ anonymousId: 'dfgdfgdfg-22b4-401d-aae5-1b994be9a969',
+ groupId: '58d0a278-b55b-4f10-b7d2-98d1c5dd4c30',
+ traits: { phone: '5055077683', subscriptionState: 'subscribed' },
+ userId: 'user877',
+ type: 'group',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ message: { type: 'alias', previousId: 'adsfsaf', userId: 'dsafsdf' },
+ },
+ {
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'us-01',
+ enableSubscriptionGroupInGroupCall: true,
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ metadata: { jobId: 6, userId: 'u1' },
+ message: { type: 'alias', previousId: 'adsfsaf2', userId: 'dsafsdf2' },
+ },
+ ],
+ destType: 'braze',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ events: [
+ {
+ name: 'Page Viewed',
+ time: '2020-01-24T11:59:02.402+05:30',
+ properties: {
+ path: '/tests/html/index2.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index2.html',
+ },
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ attributes: [
+ {
+ email: 'mickey@disney.com',
+ city: 'Disney',
+ country: 'USA',
+ firstname: 'Mickey',
+ _update_existing_only: false,
+ user_alias: {
+ alias_name: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ alias_label: 'rudder_id',
+ },
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/v2/subscription/status/set',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_groups: [
+ {
+ external_id: ['user123'],
+ phones: ['5055077683'],
+ subscription_group_id: 'c90f0fd2-2a02-4f2f-bf07-7e7d2c2ed2b1',
+ subscription_state: 'subscribed',
+ },
+ {
+ external_id: ['user877'],
+ phones: ['5055077683'],
+ subscription_group_id: '58d0a278-b55b-4f10-b7d2-98d1c5dd4c30',
+ subscription_state: 'subscribed',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.fra-01.braze.eu/users/merge',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ merge_updates: [
+ {
+ identifier_to_keep: { external_id: 'dsafsdf' },
+ identifier_to_merge: { external_id: 'adsfsaf' },
+ },
+ {
+ identifier_to_keep: { external_id: 'dsafsdf2' },
+ identifier_to_merge: { external_id: 'adsfsaf2' },
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 3, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
+ { jobId: 5, userId: 'u1' },
+ { jobId: 6, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ restApiKey: 'dummyApiKey',
+ prefixProperties: true,
+ useNativeSDK: false,
+ dataCenter: 'eu-01',
+ },
+ DestinationDefinition: {
+ DisplayName: 'Braze',
+ ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
+ Name: 'BRAZE',
+ },
+ Enabled: true,
+ ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
+ Name: 'Braze',
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'braze',
+ description: 'dedup enabled router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Sign In Completed',
+ sentAt: '2023-03-10T18:36:04.738Z',
+ userId: 'braze_test_user',
+ channel: 'web',
+ context: {
+ locale: 'en-US',
+ traits: {
+ subscribe_once: true,
+ pwa: true,
+ email: 'jackson24miranda@gmail.com',
+ lastName: 'Miranda',
+ firstName: 'Spencer',
+ is_registered: true,
+ last_identify: 'GOOGLE_SIGN_IN',
+ account_region: 'ON',
+ is_pickup_selected: 'false',
+ has_tradein_attempt: false,
+ custom_obj_attr: { key1: 'value1', key2: 'value2', key4: 'value4' },
+ custom_arr: [1, 2, 'str1'],
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.9.5' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
+ },
+ rudderId: '4118560d-e4fc-4fd1-a734-9c69eae2c047',
+ messageId: '1a342814-a882-4b65-9cc9-347544997268',
+ timestamp: '2023-03-10T18:36:05.028Z',
+ properties: {
+ cause: '/redirector',
+ method: 'GOOGLE',
+ region: 'ON',
+ orderId: '6179367977099',
+ order_id: '6179367977099',
+ webhookurl: 'https://my.test.com',
+ countingMethod: 'standard',
+ is_first_time_signin: false,
+ },
+ receivedAt: '2023-03-18T01:41:42.257+05:30',
+ request_ip: '[::1]',
+ anonymousId: '77e278c9-e984-4cdd-950c-cd0b61befd03',
+ originalTimestamp: '2023-03-10T18:36:04.733Z',
+ },
+ },
+ {
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Sign In Completed',
+ sentAt: '2023-03-10T18:36:04.738Z',
+ userId: 'braze_test_user',
+ channel: 'web',
+ context: {
+ locale: 'en-US',
+ traits: {
+ subscribe_once: true,
+ pwa: true,
+ email: 'jackson24miranda@gmail.com',
+ lastName: 'Miranda 2',
+ firstName: 'Spencer',
+ is_registered: true,
+ last_identify: 'GOOGLE_SIGN_IN',
+ account_region: 'ON',
+ is_pickup_selected: 'true',
+ has_tradein_attempt: false,
+ custom_obj_attr: { key1: 'value1', key2: 'value2', key4: 'value4' },
+ custom_arr: ['1', '2', 'str1'],
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.9.5' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
+ },
+ rudderId: '4118560d-e4fc-4fd1-a734-9c69eae2c047',
+ messageId: '1a342814-a882-4b65-9cc9-347544997268',
+ timestamp: '2023-03-10T18:36:05.028Z',
+ properties: {
+ cause: '/redirector',
+ method: 'GOOGLE',
+ region: 'ON',
+ orderId: '6179367977099',
+ order_id: '6179367977099',
+ webhookurl: 'https://my.test.com',
+ countingMethod: 'standard',
+ is_first_time_signin: false,
+ },
+ receivedAt: '2023-03-18T01:41:42.257+05:30',
+ request_ip: '[::1]',
+ anonymousId: '77e278c9-e984-4cdd-950c-cd0b61befd03',
+ originalTimestamp: '2023-03-10T18:36:04.733Z',
+ },
+ },
+ {
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
+ locale: 'en-GB',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstName: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: { All: true },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ type: 'identify',
+ userId: 'user@50',
+ },
+ },
+ {
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ message: {
+ anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
+ locale: 'en-GB',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ firstName: 'Mickey',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+ },
+ integrations: { All: true },
+ messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
+ type: 'identify',
+ userId: 'user@50',
+ },
+ },
+ ],
+ destType: 'braze',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rest.iad-03.braze.com/users/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ partner: 'RudderStack',
+ attributes: [
+ {
+ first_name: 'Spencer',
+ subscribe_once: true,
+ pwa: true,
+ external_id: 'braze_test_user',
+ custom_obj_attr: { key1: 'value1', key2: 'value2', key4: 'value4' },
+ },
+ {
+ last_name: 'Miranda 2',
+ is_pickup_selected: 'true',
+ external_id: 'braze_test_user',
+ custom_arr: ['1', '2', 'str1'],
+ },
+ {
+ city: 'Disney',
+ country: 'USA',
+ email: 'mickey@disney.com',
+ external_id: 'user@50',
+ first_name: 'Mickey',
+ },
+ ],
+ events: [
+ {
+ name: 'Sign In Completed',
+ time: '2023-03-10T18:36:05.028Z',
+ properties: {
+ cause: '/redirector',
+ method: 'GOOGLE',
+ region: 'ON',
+ orderId: '6179367977099',
+ order_id: '6179367977099',
+ webhookurl: 'https://my.test.com',
+ countingMethod: 'standard',
+ is_first_time_signin: false,
+ },
+ external_id: 'braze_test_user',
+ },
+ {
+ name: 'Sign In Completed',
+ time: '2023-03-10T18:36:05.028Z',
+ properties: {
+ cause: '/redirector',
+ method: 'GOOGLE',
+ region: 'ON',
+ orderId: '6179367977099',
+ order_id: '6179367977099',
+ webhookurl: 'https://my.test.com',
+ countingMethod: 'standard',
+ is_first_time_signin: false,
+ },
+ external_id: 'braze_test_user',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 3, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ },
+ {
+ error: '[Braze Deduplication]: Duplicate user detected, the user is dropped',
+ statTags: {
+ destType: 'BRAZE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ batched: false,
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ destination: {
+ ID: '2N9UakqKF0D35wfzSeofIxPdL8X',
+ Name: 'Braze-Test',
+ Config: {
+ appKey: '0e5440c3-226b-45d0-91b5-c64da56cde16',
+ blacklistedEvents: [],
+ dataCenter: 'US-03',
+ enableNestedArrayOperations: false,
+ enableSubscriptionGroupInGroupCall: false,
+ eventFilteringOption: 'disable',
+ oneTrustCookieCategories: [],
+ restApiKey: 'dummyApiKey',
+ supportDedup: true,
+ trackAnonymousUser: true,
+ whitelistedEvents: [],
+ },
+ Enabled: true,
+ WorkspaceID: '27O0bhB6p5ehfOWeeZlOSsSDTLg',
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2N9Uaf2tWq2QRmatBWQm03Rz6qX',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/campaign_manager/dataDelivery/business.ts b/test/integrations/destinations/campaign_manager/dataDelivery/business.ts
new file mode 100644
index 00000000000..e663f3212a8
--- /dev/null
+++ b/test/integrations/destinations/campaign_manager/dataDelivery/business.ts
@@ -0,0 +1,606 @@
+import { ProxyMetdata } from '../../../../../src/types';
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateProxyV0Payload, generateProxyV1Payload } from '../../../testUtils';
+
+// Boilerplate data for the test cases
+// ======================================
+
+const commonHeaders = {
+ Authorization: 'Bearer dummyApiKey',
+ 'Content-Type': 'application/json',
+};
+
+const encryptionInfo = {
+ kind: 'dfareporting#encryptionInfo',
+ encryptionSource: 'AD_SERVING',
+ encryptionEntityId: '3564523',
+ encryptionEntityType: 'DCM_ACCOUNT',
+};
+
+const testConversion1 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const testConversion2 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ kind: 'dfareporting#conversionsBatchInsertRequest',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
+ },
+};
+
+const proxyMetdata1: ProxyMetdata = {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+};
+
+const proxyMetdata2: ProxyMetdata = {
+ jobId: 2,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+};
+
+const metadataArray = [proxyMetdata1, proxyMetdata2];
+
+// Test scenarios for the test cases
+// ===================================
+
+export const testScenariosForV0API = [
+ {
+ id: 'cm360_v0_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Test for a valid request with a successful 200 response from the destination',
+ successCriteria: 'Should return 200 with no error with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://dfareporting.googleapis.com/test_url_for_valid_request',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: '[CAMPAIGN_MANAGER Response Handler] - Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ hasFailures: false,
+ status: [
+ {
+ conversion: testConversion1,
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: testConversion2,
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_scenario_2',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Test for a valid request - where the destination responds with 200 with error for conversion 2',
+ successCriteria: 'Should return 400 with error and with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://dfareporting.googleapis.com/test_url_for_invalid_request_conversion_2',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ status: 400,
+ message: 'Campaign Manager: Aborting during CAMPAIGN_MANAGER response transformation',
+ destinationResponse: {
+ response: {
+ hasFailures: true,
+ status: [
+ {
+ conversion: testConversion1,
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: testConversion2,
+ errors: [
+ {
+ code: 'NOT_FOUND',
+ message: 'Floodlight config id: 213123123 was not found.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_scenario_3',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Test for a valid request - where the destination responds with 200 with error for both conversions',
+ successCriteria: 'Should return 400 with error and with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint:
+ 'https://dfareporting.googleapis.com/test_url_for_invalid_request_both_conversions',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ status: 400,
+ message: 'Campaign Manager: Aborting during CAMPAIGN_MANAGER response transformation',
+ destinationResponse: {
+ response: {
+ hasFailures: true,
+ status: [
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ errors: [
+ {
+ code: 'INVALID_ARGUMENT',
+ message: 'Gclid is not valid.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ errors: [
+ {
+ code: 'NOT_FOUND',
+ message: 'Floodlight config id: 213123123 was not found.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+];
+
+export const testScenariosForV1API: ProxyV1TestData[] = [
+ {
+ id: 'cm360_v1_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Test for a valid request - where the destination responds with 200 without any error',
+ successCriteria: 'Should return 200 with no error with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ ...commonRequestParameters,
+ endpoint: 'https://dfareporting.googleapis.com/test_url_for_valid_request',
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: '[CAMPAIGN_MANAGER Response V1 Handler] - Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ hasFailures: false,
+ status: [
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ response: [
+ {
+ statusCode: 200,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'success',
+ },
+ {
+ statusCode: 200,
+ metadata: {
+ jobId: 2,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'success',
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_scenario_2',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Test for a valid request - where the destination responds with 200 with error for conversion 2',
+ successCriteria: 'Should return 200 with partial failures within the response payload',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ ...commonRequestParameters,
+ endpoint:
+ 'https://dfareporting.googleapis.com/test_url_for_invalid_request_conversion_2',
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: '[CAMPAIGN_MANAGER Response V1 Handler] - Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ hasFailures: true,
+ status: [
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ errors: [
+ {
+ code: 'NOT_FOUND',
+ message: 'Floodlight config id: 213123123 was not found.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ response: [
+ {
+ statusCode: 200,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'success',
+ },
+ {
+ statusCode: 400,
+ metadata: {
+ jobId: 2,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'Floodlight config id: 213123123 was not found., ',
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_scenario_3',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Test for a valid request - where the destination responds with 200 with error for both conversions',
+ successCriteria: 'Should return 200 with all failures within the response payload',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ ...commonRequestParameters,
+ endpoint:
+ 'https://dfareporting.googleapis.com/test_url_for_invalid_request_both_conversions',
+ },
+ metadataArray,
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: '[CAMPAIGN_MANAGER Response V1 Handler] - Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ hasFailures: true,
+ status: [
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ errors: [
+ {
+ code: 'INVALID_ARGUMENT',
+ message: 'Gclid is not valid.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+ },
+ errors: [
+ {
+ code: 'NOT_FOUND',
+ message: 'Floodlight config id: 213123123 was not found.',
+ kind: 'dfareporting#conversionError',
+ },
+ ],
+ kind: 'dfareporting#conversionStatus',
+ },
+ ],
+ kind: 'dfareporting#conversionsBatchInsertResponse',
+ },
+ status: 200,
+ },
+ response: [
+ {
+ statusCode: 400,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'Gclid is not valid., ',
+ },
+ {
+ statusCode: 400,
+ metadata: {
+ jobId: 2,
+ attemptNum: 1,
+ userId: 'dummyUserId',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestinationId',
+ workspaceId: 'dummyWorkspaceId',
+ secret: {},
+ dontBatch: false,
+ },
+ error: 'Floodlight config id: 213123123 was not found., ',
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/campaign_manager/dataDelivery/data.ts b/test/integrations/destinations/campaign_manager/dataDelivery/data.ts
index 601ad56401f..0373ca99926 100644
--- a/test/integrations/destinations/campaign_manager/dataDelivery/data.ts
+++ b/test/integrations/destinations/campaign_manager/dataDelivery/data.ts
@@ -1,604 +1,12 @@
+import { testScenariosForV0API, testScenariosForV1API } from './business';
+import { v0oauthScenarios, v1oauthScenarios } from './oauth';
+import { otherScenariosV0, otherScenariosV1 } from './other';
+
export const data = [
- {
- name: 'campaign_manager',
- description: 'Sucess insert request V0',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437689/conversions/batchinsert',
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 200,
- body: {
- output: {
- status: 200,
- message: '[CAMPAIGN_MANAGER Response Handler] - Request Processed Successfully',
- destinationResponse: {
- response: {
- hasFailures: false,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- },
- },
- },
- },
- },
- },
- {
- name: 'campaign_manager',
- description: 'Failure insert request',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437690/conversions/batchinsert',
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 400,
- body: {
- output: {
- status: 400,
- message: 'Campaign Manager: Aborting during CAMPAIGN_MANAGER response transformation',
- statTags: {
- errorCategory: 'network',
- errorType: 'aborted',
- destType: 'CAMPAIGN_MANAGER',
- module: 'destination',
- implementation: 'native',
- feature: 'dataDelivery',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- },
- destinationResponse: {
- response: {
- hasFailures: true,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- errors: [
- {
- code: 'NOT_FOUND',
- message: 'Floodlight config id: 213123123 was not found.',
- kind: 'dfareporting#conversionError',
- },
- ],
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- },
- },
- },
- },
- },
- },
- {
- name: 'campaign_manager',
- description: 'Failure insert request Aborted',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437691/conversions/batchinsert',
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 400,
- body: {
- output: {
- status: 400,
- message: 'Campaign Manager: Aborting during CAMPAIGN_MANAGER response transformation',
- statTags: {
- errorCategory: 'network',
- errorType: 'aborted',
- destType: 'CAMPAIGN_MANAGER',
- module: 'destination',
- implementation: 'native',
- feature: 'dataDelivery',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- },
- destinationResponse: {
- response: {
- hasFailures: true,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- errors: [
- {
- code: 'INVALID_ARGUMENT',
- message: 'Floodlight config id: 213123123 was not found.',
- kind: 'dfareporting#conversionError',
- },
- ],
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- },
- },
- },
- },
- },
- },
- {
- name: 'campaign_manager',
- description: 'Sucess and fail insert request v1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v1',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437692/conversions/batchinsert',
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 8,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- metadata: [
- {
- jobId: 2,
- attemptNum: 0,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- {
- jobId: 3,
- attemptNum: 1,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- ],
- files: {},
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 200,
- body: {
- output: {
- status: 200,
- message: '[CAMPAIGN_MANAGER Response V1 Handler] - Request Processed Successfully',
- destinationResponse: {
- response: {
- hasFailures: true,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- errors: [
- {
- code: 'INVALID_ARGUMENT',
- kind: 'dfareporting#conversionError',
- message: 'Floodlight config id: 213123123 was not found.',
- },
- ],
- },
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 8,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- rudderJobMetadata: [
- {
- jobId: 2,
- attemptNum: 0,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- {
- jobId: 3,
- attemptNum: 1,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- ],
- },
- response: [
- {
- error: 'Floodlight config id: 213123123 was not found., ',
- statusCode: 400,
- metadata: {
- attemptNum: 0,
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- jobId: 2,
- secret: {
- access_token: 'secret',
- developer_token: 'developer_Token',
- refresh_token: 'refresh',
- },
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- userId: '',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- },
- },
- {
- error: 'success',
- metadata: {
- attemptNum: 1,
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- jobId: 3,
- secret: {
- access_token: 'secret',
- developer_token: 'developer_Token',
- refresh_token: 'refresh',
- },
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- userId: '',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- },
- statusCode: 200,
- },
- ],
- },
- },
- },
- },
- },
- {
- name: 'campaign_manager',
- description: 'Sucess insert request v1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v1',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/43770/conversions/batchinsert',
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- metadata: {
- jobId: 2,
- attemptNum: 0,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- files: {},
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 200,
- body: {
- output: {
- status: 200,
- message: '[CAMPAIGN_MANAGER Response V1 Handler] - Request Processed Successfully',
- destinationResponse: {
- response: {
- hasFailures: false,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- rudderJobMetadata: {
- jobId: 2,
- attemptNum: 0,
- userId: '',
- sourceId: '2Vsge2uWYdrLfG7pZb5Y82eo4lr',
- destinationId: '2RHh08uOsXqE9KvCDg3hoaeuK2L',
- workspaceId: '2Csl0lSTbuM3qyHdaOQB2GcDH8o',
- secret: {
- access_token: 'secret',
- refresh_token: 'refresh',
- developer_token: 'developer_Token',
- },
- },
- },
- response: [
- {
- error: 'success',
- statusCode: 200,
- },
- ],
- },
- },
- },
- },
- },
+ ...testScenariosForV0API,
+ ...testScenariosForV1API,
+ ...v0oauthScenarios,
+ ...v1oauthScenarios,
+ ...otherScenariosV0,
+ ...otherScenariosV1,
];
diff --git a/test/integrations/destinations/campaign_manager/dataDelivery/oauth.ts b/test/integrations/destinations/campaign_manager/dataDelivery/oauth.ts
new file mode 100644
index 00000000000..929af485d8c
--- /dev/null
+++ b/test/integrations/destinations/campaign_manager/dataDelivery/oauth.ts
@@ -0,0 +1,558 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateProxyV1Payload, generateProxyV0Payload } from '../../../testUtils';
+// Boilerplat data for the test cases
+// ======================================
+
+const commonHeaders = {
+ Authorization: 'Bearer dummyApiKey',
+ 'Content-Type': 'application/json',
+};
+
+const encryptionInfo = {
+ kind: 'dfareporting#encryptionInfo',
+ encryptionSource: 'AD_SERVING',
+ encryptionEntityId: '3564523',
+ encryptionEntityType: 'DCM_ACCOUNT',
+};
+
+const testConversion1 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const testConversion2 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ kind: 'dfareporting#conversionsBatchInsertRequest',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
+ },
+};
+
+// Test scenarios for the test cases
+// ===================================
+
+export const v0oauthScenarios = [
+ {
+ id: 'cm360_v0_oauth_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Oauth where valid credentials are missing as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 401 - the proxy should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_credentials_missing',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: {
+ error: {
+ code: 401,
+ message:
+ 'Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ errors: [
+ {
+ message: 'Login Required.',
+ domain: 'global',
+ reason: 'required',
+ location: 'Authorization',
+ locationType: 'header',
+ },
+ ],
+ status: 'UNAUTHENTICATED',
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
+ reason: 'CREDENTIALS_MISSING',
+ domain: 'googleapis.com',
+ metadata: {
+ method: 'google.ads.xfa.op.v4.DfareportingConversions.Batchinsert',
+ service: 'googleapis.com',
+ },
+ },
+ ],
+ },
+ },
+ status: 401,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'REFRESH_TOKEN',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_oauth_scenario_2',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Oauth where ACCESS_TOKEN_SCOPE_INSUFFICIENT error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_access_token_scope_insufficient',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: Request had insufficient authentication scopes. during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: {
+ error: {
+ code: 403,
+ message: 'Request had insufficient authentication scopes.',
+ errors: [
+ {
+ message: 'Insufficient Permission',
+ domain: 'global',
+ reason: 'insufficientPermissions',
+ },
+ ],
+ status: 'PERMISSION_DENIED',
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.rpc.ErrorInfo',
+ reason: 'ACCESS_TOKEN_SCOPE_INSUFFICIENT',
+ domain: 'googleapis.com',
+ metadata: {
+ service: 'gmail.googleapis.com',
+ method: 'caribou.api.proto.MailboxService.GetProfile',
+ },
+ },
+ ],
+ },
+ },
+ status: 403,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_oauth_scenario_3',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Oauth where google.auth.exceptions.RefreshError invalid_grant error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_invalid_grant',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: invalid_grant during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: {
+ error: {
+ code: 403,
+ message: 'invalid_grant',
+ error_description: 'Bad accesss',
+ },
+ },
+ status: 403,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_oauth_scenario_4',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Oauth where google.auth.exceptions.RefreshError refresh error as mock response from destination',
+ successCriteria: 'Should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_refresh_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: undefined during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: {
+ error: 'unauthorized',
+ error_description: 'Access token expired: 2020-10-20T12:00:00.000Z',
+ },
+ status: 401,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'REFRESH_TOKEN',
+ },
+ },
+ },
+ },
+ },
+];
+
+export const v1oauthScenarios: ProxyV1TestData[] = [
+ {
+ id: 'cm360_v1_oauth_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Oauth where valid credentials are missing as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 401 - the proxy should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_credentials_missing',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"code":401,"message":"Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.","errors":[{"message":"Login Required.","domain":"global","reason":"required","location":"Authorization","locationType":"header"}],"status":"UNAUTHENTICATED","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"CREDENTIALS_MISSING","domain":"googleapis.com","metadata":{"method":"google.ads.xfa.op.v4.DfareportingConversions.Batchinsert","service":"googleapis.com"}}]}}',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'REFRESH_TOKEN',
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_oauth_scenario_2',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Oauth where ACCESS_TOKEN_SCOPE_INSUFFICIENT error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_access_token_scope_insufficient',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"code":403,"message":"Request had insufficient authentication scopes.","errors":[{"message":"Insufficient Permission","domain":"global","reason":"insufficientPermissions"}],"status":"PERMISSION_DENIED","details":[{"@type":"type.googleapis.com/google.rpc.ErrorInfo","reason":"ACCESS_TOKEN_SCOPE_INSUFFICIENT","domain":"googleapis.com","metadata":{"service":"gmail.googleapis.com","method":"caribou.api.proto.MailboxService.GetProfile"}}]}}',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_oauth_scenario_3',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Oauth where google.auth.exceptions.RefreshError invalid_grant error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_invalid_grant',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"code":403,"message":"invalid_grant","error_description":"Bad accesss"}}',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_oauth_scenario_4',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Oauth where google.auth.exceptions.RefreshError refresh error as mock response from destination',
+ successCriteria: 'Should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://googleapis.com/test_url_for_refresh_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":"unauthorized","error_description":"Access token expired: 2020-10-20T12:00:00.000Z"}',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ authErrorCategory: 'REFRESH_TOKEN',
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/campaign_manager/dataDelivery/other.ts b/test/integrations/destinations/campaign_manager/dataDelivery/other.ts
new file mode 100644
index 00000000000..709f55a4c03
--- /dev/null
+++ b/test/integrations/destinations/campaign_manager/dataDelivery/other.ts
@@ -0,0 +1,529 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateProxyV0Payload, generateProxyV1Payload } from '../../../testUtils';
+
+export const otherScenariosV0 = [
+ {
+ id: 'cm360_v0_other_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Scenario for testing Service Unavailable error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ endpoint: 'https://random_test_url/test_for_service_not_available',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: Service Unavailable during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: {
+ error: {
+ message: 'Service Unavailable',
+ description:
+ 'The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later.',
+ },
+ },
+ status: 503,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_other_scenario_2',
+ name: 'campaign_manager',
+ description: '[Proxy v0 API] :: Scenario for testing Internal Server error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ endpoint: 'https://random_test_url/test_for_internal_server_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: undefined during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: 'Internal Server Error',
+ status: 500,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_other_scenario_3',
+ name: 'campaign_manager',
+ description: '[Proxy v0 API] :: Scenario for testing Gateway Time Out error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ endpoint: 'https://random_test_url/test_for_gateway_time_out',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: undefined during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: 'Gateway Timeout',
+ status: 504,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_other_scenario_4',
+ name: 'campaign_manager',
+ description: '[Proxy v0 API] :: Scenario for testing null response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ endpoint: 'https://random_test_url/test_for_null_response',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: undefined during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: '',
+ status: 500,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v0_other_scenario_5',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v0 API] :: Scenario for testing null and no status response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ endpoint: 'https://random_test_url/test_for_null_and_no_status',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Campaign Manager: undefined during CAMPAIGN_MANAGER response transformation 3',
+ destinationResponse: {
+ response: '',
+ status: 500,
+ },
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ },
+ },
+ },
+ },
+ },
+];
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'cm360_v1_other_scenario_1',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Scenario for testing Service Unavailable error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_service_not_available',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"message":"Service Unavailable","description":"The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later."}}',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_other_scenario_2',
+ name: 'campaign_manager',
+ description: '[Proxy v1 API] :: Scenario for testing Internal Server error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_internal_server_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Internal Server Error"',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_other_scenario_3',
+ name: 'campaign_manager',
+ description: '[Proxy v1 API] :: Scenario for testing Gateway Time Out error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_gateway_time_out',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Gateway Timeout"',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_other_scenario_4',
+ name: 'campaign_manager',
+ description: '[Proxy v1 API] :: Scenario for testing null response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_response',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'cm360_v1_other_scenario_5',
+ name: 'campaign_manager',
+ description:
+ '[Proxy v1 API] :: Scenario for testing null and no status response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_and_no_status',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ },
+ ],
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'CAMPAIGN_MANAGER',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ message:
+ 'Campaign Manager: Error transformer proxy v1 during CAMPAIGN_MANAGER response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/campaign_manager/network.ts b/test/integrations/destinations/campaign_manager/network.ts
index ddecbaf8fa0..b7c23012481 100644
--- a/test/integrations/destinations/campaign_manager/network.ts
+++ b/test/integrations/destinations/campaign_manager/network.ts
@@ -1,49 +1,70 @@
-const Data = [
+const commonHeaders = {
+ Authorization: 'Bearer dummyApiKey',
+ 'Content-Type': 'application/json',
+};
+
+const encryptionInfo = {
+ kind: 'dfareporting#encryptionInfo',
+ encryptionSource: 'AD_SERVING',
+ encryptionEntityId: '3564523',
+ encryptionEntityType: 'DCM_ACCOUNT',
+};
+
+const testConversion1 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 7,
+ gclid: '123',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const testConversion2 = {
+ timestampMicros: '1668624722000000',
+ floodlightConfigurationId: '213123123',
+ ordinal: '1',
+ floodlightActivityId: '456543345245',
+ value: 8,
+ gclid: '321',
+ limitAdTracking: true,
+ childDirectedTreatment: true,
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ kind: 'dfareporting#conversionsBatchInsertRequest',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
+ },
+};
+
+// MOCK DATA
+const businessMockData = [
{
+ description: 'Mock response from destination depicting a valid request',
httpReq: {
method: 'post',
- url: 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437689/conversions/batchinsert',
+ url: 'https://dfareporting.googleapis.com/test_url_for_valid_request',
data: {
kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
},
+ headers: commonHeaders,
},
httpRes: {
data: {
hasFailures: false,
status: [
{
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
+ conversion: testConversion1,
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: testConversion2,
kind: 'dfareporting#conversionStatus',
},
],
@@ -54,50 +75,28 @@ const Data = [
},
},
{
+ description:
+ 'Mock response from destination depicting a request with 1 valid and 1 invalid conversion',
httpReq: {
method: 'post',
- url: 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437690/conversions/batchinsert',
+ url: 'https://dfareporting.googleapis.com/test_url_for_invalid_request_conversion_2',
data: {
kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
},
+ headers: commonHeaders,
},
httpRes: {
data: {
hasFailures: true,
status: [
{
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
+ conversion: testConversion1,
+ kind: 'dfareporting#conversionStatus',
+ },
+ {
+ conversion: testConversion2,
errors: [
{
code: 'NOT_FOUND',
@@ -115,185 +114,37 @@ const Data = [
},
},
{
+ description: 'Mock response from destination depicting a request with 2 invalid conversions',
httpReq: {
method: 'post',
- url: 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/43770/conversions/batchinsert',
- data: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- },
- httpRes: {
- data: {
- hasFailures: false,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- statusText: 'OK',
- },
- },
- {
- httpReq: {
- method: 'post',
- url: 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437692/conversions/batchinsert',
+ url: 'https://dfareporting.googleapis.com/test_url_for_invalid_request_both_conversions',
data: {
kind: 'dfareporting#conversionsBatchInsertRequest',
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 8,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
+ encryptionInfo,
+ conversions: [testConversion1, testConversion2],
},
+ headers: commonHeaders,
},
httpRes: {
data: {
hasFailures: true,
status: [
{
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
+ conversion: testConversion1,
errors: [
{
code: 'INVALID_ARGUMENT',
- message: 'Floodlight config id: 213123123 was not found.',
+ message: 'Gclid is not valid.',
kind: 'dfareporting#conversionError',
},
],
kind: 'dfareporting#conversionStatus',
},
{
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 8,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- kind: 'dfareporting#conversionStatus',
- },
- ],
- kind: 'dfareporting#conversionsBatchInsertResponse',
- },
- status: 200,
- statusText: 'OK',
- },
- },
- {
- httpReq: {
- method: 'post',
- url: 'https://dfareporting.googleapis.com/dfareporting/v4/userprofiles/437691/conversions/batchinsert',
- data: {
- kind: 'dfareporting#conversionsBatchInsertRequest',
- encryptionInfo: {
- kind: 'dfareporting#encryptionInfo',
- encryptionSource: 'AD_SERVING',
- encryptionEntityId: '3564523',
- encryptionEntityType: 'DCM_ACCOUNT',
- },
- conversions: [
- {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
- ],
- },
- headers: {
- Authorization: 'Bearer dummyApiKey',
- 'Content-Type': 'application/json',
- },
- },
- httpRes: {
- data: {
- hasFailures: true,
- status: [
- {
- conversion: {
- timestampMicros: '1668624722000000',
- floodlightConfigurationId: '213123123',
- ordinal: '1',
- floodlightActivityId: '456543345245',
- value: 7,
- gclid: '123',
- limitAdTracking: true,
- childDirectedTreatment: true,
- },
+ conversion: testConversion2,
errors: [
{
- code: 'INVALID_ARGUMENT',
+ code: 'NOT_FOUND',
message: 'Floodlight config id: 213123123 was not found.',
kind: 'dfareporting#conversionError',
},
@@ -308,4 +159,5 @@ const Data = [
},
},
];
-export const networkCallsData = [...Data];
+
+export const networkCallsData = [...businessMockData];
diff --git a/test/integrations/destinations/campaign_manager/router/data.ts b/test/integrations/destinations/campaign_manager/router/data.ts
index 2ab1813cf89..5b4e5bcce4c 100644
--- a/test/integrations/destinations/campaign_manager/router/data.ts
+++ b/test/integrations/destinations/campaign_manager/router/data.ts
@@ -17,6 +17,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 1,
+ userId: 'u1',
},
destination: {
Config: {
@@ -56,21 +57,13 @@ export const data = [
postalCode: 'EC3M',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'Promotion Clicked',
originalTimestamp: '2022-11-17T00:22:02.903+05:30',
@@ -91,9 +84,7 @@ export const data = [
},
type: 'track',
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -106,6 +97,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 2,
+ userId: 'u1',
},
destination: {
Config: {
@@ -145,21 +137,13 @@ export const data = [
postalCode: 'EC3M',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'Promotion Clicked',
type: 'track',
@@ -180,9 +164,7 @@ export const data = [
requestType: 'batchupdate',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -195,6 +177,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 3,
+ userId: 'u1',
},
destination: {
Config: {
@@ -234,21 +217,13 @@ export const data = [
postalCode: 'EC3M',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'Promotion Clicked',
type: 'track',
@@ -272,9 +247,7 @@ export const data = [
requestType: 'randomValue',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -341,6 +314,7 @@ export const data = [
refresh_token: 'efgh5678',
},
jobId: 1,
+ userId: 'u1',
},
],
batched: true,
@@ -404,6 +378,7 @@ export const data = [
refresh_token: 'efgh5678',
},
jobId: 2,
+ userId: 'u1',
},
],
batched: true,
@@ -439,6 +414,7 @@ export const data = [
refresh_token: 'efgh5678',
},
jobId: 3,
+ userId: 'u1',
},
],
statusCode: 400,
@@ -474,6 +450,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
@@ -502,9 +479,7 @@ export const data = [
},
type: 'track',
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -517,6 +492,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
destination: {
Config: {
@@ -545,9 +521,7 @@ export const data = [
requestType: 'batchinsert',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -560,6 +534,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
destination: {
Config: {
@@ -588,9 +563,7 @@ export const data = [
requestType: 'batchinsert',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -677,6 +650,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
{
secret: {
@@ -685,6 +659,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
{
secret: {
@@ -693,6 +668,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
],
batched: true,
@@ -730,6 +706,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
@@ -758,9 +735,7 @@ export const data = [
},
type: 'track',
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -773,6 +748,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
destination: {
Config: {
@@ -801,9 +777,7 @@ export const data = [
requestType: 'batchupdate',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -816,6 +790,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
destination: {
Config: {
@@ -844,9 +819,7 @@ export const data = [
requestType: 'batchinsert',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -916,6 +889,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
{
secret: {
@@ -924,6 +898,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
],
batched: true,
@@ -983,6 +958,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
],
batched: true,
@@ -1020,6 +996,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
@@ -1047,9 +1024,7 @@ export const data = [
},
type: 'track',
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -1062,6 +1037,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
destination: {
Config: {
@@ -1089,9 +1065,7 @@ export const data = [
requestType: 'batchupdate',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -1104,6 +1078,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
destination: {
Config: {
@@ -1124,7 +1099,6 @@ export const data = [
floodlightConfigurationId: '213123123',
floodlightActivityId: '456543345245',
value: 7,
-
ordinal: '1',
quantity: '455678',
limitAdTracking: true,
@@ -1132,9 +1106,7 @@ export const data = [
requestType: 'batchinsert',
},
anonymousId: 'randomId',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2022-11-17T00:22:02.903+05:30',
},
@@ -1159,6 +1131,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 4,
+ userId: 'u1',
},
],
batched: false,
@@ -1192,6 +1165,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 5,
+ userId: 'u1',
},
],
batched: false,
@@ -1225,6 +1199,7 @@ export const data = [
developer_token: 'ijkl91011',
},
jobId: 6,
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/candu/router/data.ts b/test/integrations/destinations/candu/router/data.ts
index 8aa6441881b..e6c7d96a159 100644
--- a/test/integrations/destinations/candu/router/data.ts
+++ b/test/integrations/destinations/candu/router/data.ts
@@ -18,9 +18,7 @@ export const data = [
Name: 'CANDU',
DisplayName: 'Candu',
Config: {
- destConfig: {
- defaultConfig: ['apiKey'],
- },
+ destConfig: { defaultConfig: ['apiKey'] },
excludeKeys: [],
includeKeys: [
'apiKey',
@@ -47,16 +45,12 @@ export const data = [
},
ResponseRules: {},
},
- Config: {
- apiKey: 'FXLkLUEhGJyvmY4',
- },
+ Config: { apiKey: 'FXLkLUEhGJyvmY4' },
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
anonymousId: 'a1b2c3d4e5f6g7h8i9j10',
channel: 'mobile',
@@ -77,32 +71,21 @@ export const data = [
attTrackingStatus: 3,
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: 'watchos',
- },
- screen: {
- density: 2,
- },
+ os: { name: 'watchos' },
+ screen: { density: 2 },
traits: {
email: 'sampath@gmail.com',
name: 'Joker',
Gender: 'male',
- foo: {
- foo: 'bar',
- },
+ foo: { foo: 'bar' },
},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'product added',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'ea5cfab2-3961-4d8a-8187-3d1858c90a9f',
originalTimestamp: '2020-01-17T04:53:51.185Z',
receivedAt: '2020-01-17T10:23:52.688+05:30',
@@ -156,11 +139,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/clevertap/dataDelivery/data.ts b/test/integrations/destinations/clevertap/dataDelivery/data.ts
index bc8866823ec..8032dd50c80 100644
--- a/test/integrations/destinations/clevertap/dataDelivery/data.ts
+++ b/test/integrations/destinations/clevertap/dataDelivery/data.ts
@@ -1,227 +1,230 @@
export const data = [
{
- "name": "clevertap",
- "description": "Test 0",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.clevertap.com/1/upload/test1",
- "headers": {
- "X-CleverTap-Account-Id": "476550467",
- "X-CleverTap-Passcode": "fbee74a147828e2932c701d19dc1f2dcfa4ac0048be3aa3a88d427090a59dc1c0fa002f1",
- "Content-Type": "application/json"
+ name: 'clevertap',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload/test1',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode':
+ 'fbee74a147828e2932c701d19dc1f2dcfa4ac0048be3aa3a88d427090a59dc1c0fa002f1',
+ 'Content-Type': 'application/json',
},
- "body": {
- "JSON": {
- "d": [
+ body: {
+ JSON: {
+ d: [
{
- "type": "profile",
- "profileData": {
- "Email": "jamesDoe@gmail.com",
- "Name": "James Doe",
- "Phone": "92374162212",
- "Gender": "M",
- "Employed": true,
- "DOB": "1614775793",
- "Education": "Science",
- "Married": "Y",
- "Customer Type": "Prime",
- "graduate": true,
- "msg_push": true,
- "msgSms": true,
- "msgemail": true,
- "msgwhatsapp": false,
- "custom_tags": "[\"Test_User\",\"Interested_User\",\"DIY_Hobby\"]",
- "custom_mappings": "{\"Office\":\"Trastkiv\",\"Country\":\"Russia\"}",
- "address": "{\"city\":\"kolkata\",\"country\":\"India\",\"postalCode\":789223,\"state\":\"WB\",\"street\":\"\"}"
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: 'Y',
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
},
- "identity": "anon_id"
- }
- ]
+ identity: 'anon_id',
+ },
+ ],
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'clevertap',
},
- "files": {},
- "params": {
- "destination": "clevertap"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "status": "success",
- "processed": 1,
- "unprocessed": []
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ status: 'success',
+ processed: 1,
+ unprocessed: [],
},
- "status": 200
- }
- }
- }
- }
- }
+ status: 200,
+ },
+ },
+ },
+ },
+ },
},
{
- "name": "clevertap",
- "description": "Test 1",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "d": [
+ name: 'clevertap',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ d: [
{
- "identity": "anon-id-new",
- "type": "event",
- "evtName": "Web Page Viewed: Rudder",
- "evtData": {
- "title": "Home",
- "path": "/"
- }
- }
- ]
- }
+ identity: 'anon-id-new',
+ type: 'event',
+ evtName: 'Web Page Viewed: Rudder',
+ evtData: {
+ title: 'Home',
+ path: '/',
+ },
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ headers: {
+ 'X-CleverTap-Account-Id': 'fakeId123',
+ 'X-CleverTap-Passcode': 'fakePasscode123',
+ 'Content-Type': 'application/json',
},
- "type": "REST",
- "files": {},
- "method": "POST",
- "headers": {
- "X-CleverTap-Account-Id": "fakeId123",
- "X-CleverTap-Passcode": "fakePasscode123",
- "Content-Type": "application/json"
+ version: '1',
+ endpoint: 'https://api.clevertap.com/1/upload/test2',
+ params: {
+ destination: 'clevertap',
},
- "version": "1",
- "endpoint": "https://api.clevertap.com/1/upload/test2",
- "params": {
- "destination": "clevertap"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 401,
- "body": {
- "output": {
- "status": 401,
- "message": "Request failed with status: 401",
- "destinationResponse": {
- "response": {
- "status": "fail",
- "error": "Invalid Credentials",
- "code": 401
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ message: 'Request failed with status: 401',
+ destinationResponse: {
+ response: {
+ status: 'fail',
+ error: 'Invalid Credentials',
+ code: 401,
},
- "status": 401
+ status: 401,
},
- "statTags": {
- "destType": "CLEVERTAP",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
+ statTags: {
+ destType: 'CLEVERTAP',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
},
{
- "name": "clevertap",
- "description": "Test 2",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "body": {
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {},
- "JSON": {
- "d": [
+ name: 'clevertap',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ d: [
{
- "identity": "anon-id-new",
- "type": "event",
- "evtData": {
- "title": "Home",
- "path": "/"
- }
- }
- ]
- }
+ identity: 'anon-id-new',
+ type: 'event',
+ evtData: {
+ title: 'Home',
+ path: '/',
+ },
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode':
+ 'fbee74a147828e2932c701d19dc1f2dcfa4ac0048be3aa3a88d427090a59dc1c0fa002f1',
+ 'Content-Type': 'application/json',
},
- "type": "REST",
- "files": {},
- "method": "POST",
- "headers": {
- "X-CleverTap-Account-Id": "476550467",
- "X-CleverTap-Passcode": "fbee74a147828e2932c701d19dc1f2dcfa4ac0048be3aa3a88d427090a59dc1c0fa002f1",
- "Content-Type": "application/json"
+ version: '1',
+ endpoint: 'https://api.clevertap.com/1/upload/test3',
+ params: {
+ destination: 'clevertap',
},
- "version": "1",
- "endpoint": "https://api.clevertap.com/1/upload/test3",
- "params": {
- "destination": "clevertap"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 400,
- "body": {
- "output": {
- "status": 400,
- "message": "Request failed with status: 200",
- "destinationResponse": {
- "response": {
- "status": "fail",
- "processed": 0,
- "unprocessed": []
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ status: 400,
+ message: 'Request failed with status: 200',
+ destinationResponse: {
+ response: {
+ status: 'fail',
+ processed: 0,
+ unprocessed: [],
},
- "status": 200
+ status: 200,
},
- "statTags": {
- "destType": "CLEVERTAP",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
- }
-]
\ No newline at end of file
+ statTags: {
+ destType: 'CLEVERTAP',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/clevertap/network.ts b/test/integrations/destinations/clevertap/network.ts
index c4eb23ee398..57a647e6849 100644
--- a/test/integrations/destinations/clevertap/network.ts
+++ b/test/integrations/destinations/clevertap/network.ts
@@ -65,7 +65,8 @@ const dataDeliveryMocksData = [
method: 'POST',
},
httpRes: {
- data: { status: 'fail', error: 'Invalid Credentials', code: 401 }, status: 401
+ data: { status: 'fail', error: 'Invalid Credentials', code: 401 },
+ status: 401,
},
},
{
diff --git a/test/integrations/destinations/clevertap/processor/data.ts b/test/integrations/destinations/clevertap/processor/data.ts
new file mode 100644
index 00000000000..6309c5ec8a1
--- /dev/null
+++ b/test/integrations/destinations/clevertap/processor/data.ts
@@ -0,0 +1,2429 @@
+export const data = [
+ {
+ name: 'clevertap',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ 'category-unsubscribe': { email: ['Marketing', 'Transactional'] },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ 'category-unsubscribe': { email: ['Marketing', 'Transactional'] },
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'page',
+ anonymousId: 'anon-id-new',
+ name: 'Rudder',
+ properties: {
+ title: 'Home',
+ path: '/',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Web Page Viewed: Rudder',
+ evtData: {
+ title: 'Home',
+ path: '/',
+ },
+ type: 'event',
+ identity: 'anon-id-new',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'screen',
+ userId: 'identified_user_id',
+ name: 'Rudder-Screen',
+ properties: {
+ prop1: '5',
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Screen Viewed: Rudder-Screen',
+ evtData: {
+ prop1: '5',
+ },
+ type: 'event',
+ identity: 'identified_user_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'user123',
+ event: 'Product Purchased',
+ properties: {
+ name: "Rubik's Cube",
+ revenue: 4.99,
+ },
+ context: {
+ ip: '14.5.67.21',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Product Purchased',
+ evtData: {
+ name: "Rubik's Cube",
+ revenue: 4.99,
+ },
+ type: 'event',
+ identity: 'user123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 5: ERROR - Message Type is not present. Aborting message.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ userId: 'user1234',
+ event: 'FailTest',
+ properties: {
+ name: 'Random',
+ revenue: 4.99,
+ },
+ context: {
+ ip: '14.5.67.21',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'CLEVERTAP',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 6: ERROR - Message type not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'Rndm',
+ userId: 'user1234',
+ event: 'FailTest',
+ properties: {
+ name: 'Random2',
+ revenue: 4.99,
+ },
+ context: {
+ ip: '14.5.67.21',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Message type not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'CLEVERTAP',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2021-03-10T11:59:57.815Z',
+ userId: 'riverjohn',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.13',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:5500/test.html',
+ path: '/test.html',
+ title: 'sample source',
+ search: '',
+ referrer: 'http://127.0.0.1:5500/',
+ referring_domain: '127.0.0.1:5500',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'riverjohn@gmail.com',
+ phone: '+12345678900',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/airplane.png',
+ testIng: true,
+ lastName: 'John',
+ firstname: 'River',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.13',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:86.0) Gecko/20100101 Firefox/86.0',
+ },
+ rudderId: 'fd5d3d37-3ce6-471d-b416-2f351212a44f',
+ messageId: '8ff6fd1b-b381-43fc-883c-92bf8eb0e725',
+ properties: {
+ tax: 1,
+ total: 20,
+ coupon: 'ImagePro',
+ revenue: 15,
+ currency: 'USD',
+ discount: 1.5,
+ order_id: '1234',
+ ts: '2021-03-10T11:59:22.080Z',
+ products: [
+ {
+ sku: 'G-32',
+ url: 'https://www.website.com/product/path',
+ name: 'Monopoly',
+ price: 14,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https://www.website.com/product/path.jpg',
+ product_id: '123',
+ },
+ {
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ category: 'Games',
+ quantity: 2,
+ product_id: '345',
+ },
+ ],
+ shipping: 22,
+ affiliation: 'Apple Store',
+ checkout_id: '12345',
+ },
+ anonymousId: 'b2e06708-dd2a-4aee-bb32-41855d2fbdab',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-03-10T11:59:22.080Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Charged',
+ evtData: {
+ 'Charged ID': '12345',
+ Amount: 15,
+ Items: [
+ {
+ sku: 'G-32',
+ url: 'https://www.website.com/product/path',
+ name: 'Monopoly',
+ price: 14,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https://www.website.com/product/path.jpg',
+ product_id: '123',
+ },
+ {
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ category: 'Games',
+ quantity: 2,
+ product_id: '345',
+ },
+ ],
+ tax: 1,
+ total: 20,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ discount: 1.5,
+ order_id: '1234',
+ shipping: 22,
+ affiliation: 'Apple Store',
+ },
+ ts: 1615377562,
+ type: 'event',
+ identity: 'riverjohn',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 8: ERROR - userId, not present cannot track anonymous user',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: false,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'track',
+ anonymousId: 'random_anon_id',
+ event: 'FailTest_with_anon',
+ properties: {
+ name: 'Random2',
+ revenue: 4.99,
+ },
+ context: {
+ ip: '14.5.67.21',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'userId, not present cannot track anonymous user',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'CLEVERTAP',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'female',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Gender: 'F',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'other',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ type: 'identify',
+ event: 'identify',
+ sentAt: '2021-05-24T08:53:38.762Z',
+ userId: 'useran4',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '10',
+ },
+ app: {
+ name: 'myfirstapp',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.example.myfirstapp',
+ },
+ device: {
+ id: 'f54bb572361c4fd1',
+ name: 'whyred',
+ type: 'Android',
+ model: 'Redmi Note 5 Pro',
+ manufacturer: 'Xiaomi',
+ token: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2118,
+ density: 420,
+ },
+ traits: {
+ id: 'useran4',
+ email: 'tony4an@testmail.com',
+ phone: '4444457700',
+ userId: 'useran4',
+ lastname: 'Stark',
+ firstname: 'Tony4AN',
+ anonymousId: 'f54bb572361c4fd1',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.12',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi Note 5 Pro Build/QQ3A.200805.001)',
+ },
+ rudderId: 'd8dd4917-bdb2-4c17-8f62-24c79d87a937',
+ messageId: '1621846417928-7fbb739f-5f96-48ca-9ebb-5bfc4076a687',
+ anonymousId: 'f54bb572361c4fd1',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-05-24T08:53:37.929Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'tony4an@testmail.com',
+ Phone: '4444457700',
+ Name: 'Tony4AN Stark',
+ identity: 'useran4',
+ },
+ objectId: 'f54bb572361c4fd1',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'token',
+ tokenData: {
+ id: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ type: 'fcm',
+ },
+ objectId: 'f54bb572361c4fd1',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ type: 'identify',
+ event: 'identify',
+ sentAt: '2021-04-21T12:05:42.383Z',
+ userId: 'ankur4',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'iOS',
+ version: '13.0',
+ },
+ app: {
+ name: 'Rudder-CleverTap_Example',
+ build: '1.0',
+ version: '1.0',
+ namespace: 'org.cocoapods.demo.Rudder-CleverTap-Example',
+ },
+ device: {
+ id: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ name: 'iPhone 11 Pro Max',
+ type: 'iOS',
+ model: 'iPhone',
+ manufacturer: 'Apple',
+ token: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 896,
+ height: 414,
+ density: 3,
+ },
+ traits: {
+ name: 'Ankur4 Mittal',
+ email: 'ankur4gmail',
+ phone: '8260294239',
+ userId: 'ankur4',
+ },
+ library: {
+ name: 'rudder-ios-library',
+ version: '1.0.11',
+ },
+ network: {
+ wifi: true,
+ carrier: 'unavailable',
+ cellular: false,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent: 'unknown',
+ },
+ rudderId: 'f5bb9c22-4987-4ef2-9b58-52788035ffb7',
+ messageId: '1619006730-60fa60c0-3c77-4de7-95d4-e7dc58214947',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-04-21T12:05:30.330Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'ankur4gmail',
+ Name: 'Ankur4 Mittal',
+ Phone: '8260294239',
+ },
+ identity: 'ankur4',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ event: 'Random',
+ properties: {
+ country_region: 'India',
+ test: 'abc',
+ },
+ receivedAt: '2021-08-20T12:49:07.691Z',
+ rudderId: '138c4214-b537-4f77-9dea-9abde70b5147',
+ type: 'track',
+ anonymousId: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Random',
+ evtData: {
+ country_region: 'India',
+ test: 'abc',
+ },
+ type: 'event',
+ objectId: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ event: 'Random 2',
+ properties: {
+ country_region: 'India',
+ test: 'abc',
+ },
+ receivedAt: '2021-08-20T12:49:07.691Z',
+ rudderId: '138c4214-b537-4f77-9dea-9abde70b5147',
+ type: 'track',
+ userId: 'ankur4',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ evtName: 'Random 2',
+ evtData: {
+ country_region: 'India',
+ test: 'abc',
+ },
+ type: 'event',
+ identity: 'ankur4',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ ts: '2021-03-10T11:59:22.080Z',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'jamesDoe@gmail.com',
+ Name: 'James Doe',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ },
+ ts: 1615377562,
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ type: 'identify',
+ event: 'identify',
+ sentAt: '2021-05-24T08:53:38.762Z',
+ userId: 'useran4',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'watchos',
+ },
+ app: {
+ name: 'myfirstapp',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.example.myfirstapp',
+ },
+ device: {
+ id: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ type: 'watchos',
+ manufacturer: 'Apple',
+ token: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2118,
+ density: 420,
+ },
+ traits: {
+ id: 'useran4',
+ email: 'tony4an@testmail.com',
+ phone: '4444457700',
+ userId: 'useran4',
+ lastname: 'Stark',
+ firstname: 'Tony4AN',
+ anonymousId: 'f54bb572361c4fd1',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.12',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi Note 5 Pro Build/QQ3A.200805.001)',
+ },
+ rudderId: 'd8dd4917-bdb2-4c17-8f62-24c79d87a937',
+ messageId: '1621846417928-7fbb739f-5f96-48ca-9ebb-5bfc4076a687',
+ anonymousId: 'f54bb572361c4fd1',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-05-24T08:53:37.929Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'tony4an@testmail.com',
+ Phone: '4444457700',
+ Name: 'Tony4AN Stark',
+ identity: 'useran4',
+ },
+ objectId: 'f54bb572361c4fd1',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'token',
+ tokenData: {
+ id: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ type: 'apns',
+ },
+ objectId: 'f54bb572361c4fd1',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ type: 'alias',
+ userId: 'newaddedid001',
+ context: {
+ traits: {
+ ts: 1468308340,
+ },
+ },
+ rudderId: 'a8556b1b-9d11-478d-9242-be124d1f0c93',
+ messageId: '46c1a69c-cc24-4a49-8079-3fcbabf15eb8',
+ previousId: '1122121',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ identity: 'newaddedid001',
+ },
+ ts: 1468308340,
+ identity: '1122121',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'johnDoe@gmail.com',
+ first_name: 'John',
+ last_name: 'Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ overrideFields: {
+ first_name: 'John',
+ last_name: 'Doe',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'johnDoe@gmail.com',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ Name: 'John Doe',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ first_name: 'John',
+ last_name: 'Doe',
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ overrideFields: {
+ first_name: 'John',
+ last_name: 'Doe',
+ },
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ anonymousId: 'anon_id',
+ email: 'johnDoe@gmail.com',
+ first_name: 'John',
+ last_name: 'Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': '476550467',
+ 'X-CleverTap-Passcode': 'sample_passcode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ profileData: {
+ Email: 'johnDoe@gmail.com',
+ Phone: '92374162212',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ Name: 'John Doe',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ first_name: 'John',
+ last_name: 'Doe',
+ },
+ identity: 'anon_id',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 20: ERROR - Products property value must be an array of objects',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: false,
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ sentAt: '2021-03-10T11:59:57.815Z',
+ userId: 'riverjohn',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.13',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:5500/test.html',
+ path: '/test.html',
+ title: 'sample source',
+ search: '',
+ referrer: 'http://127.0.0.1:5500/',
+ referring_domain: '127.0.0.1:5500',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'riverjohn@gmail.com',
+ phone: '+12345678900',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/airplane.png',
+ testIng: true,
+ lastName: 'John',
+ firstname: 'River',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.13',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:86.0) Gecko/20100101 Firefox/86.0',
+ },
+ rudderId: 'fd5d3d37-3ce6-471d-b416-2f351212a44f',
+ messageId: '8ff6fd1b-b381-43fc-883c-92bf8eb0e725',
+ properties: {
+ tax: 1,
+ total: 20,
+ coupon: 'ImagePro',
+ revenue: 15,
+ currency: 'USD',
+ discount: 1.5,
+ order_id: '1234',
+ ts: '2021-03-10T11:59:22.080Z',
+ products: {
+ sku: 'G-32',
+ url: 'https://www.website.com/product/path',
+ name: 'Monopoly',
+ price: 14,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https://www.website.com/product/path.jpg',
+ product_id: '123',
+ },
+ shipping: 22,
+ affiliation: 'Apple Store',
+ checkout_id: '12345',
+ },
+ anonymousId: 'b2e06708-dd2a-4aee-bb32-41855d2fbdab',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-03-10T11:59:22.080Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Products property value must be an array of objects',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'CLEVERTAP',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clevertap',
+ description: 'Test 21: ERROR - Unable to process without anonymousId or userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ passcode: 'sample_passcode',
+ accountId: '476550467',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ message: {
+ event: 'Random',
+ properties: {
+ country_region: 'India',
+ test: 'abc',
+ },
+ receivedAt: '2021-08-20T12:49:07.691Z',
+ rudderId: '138c4214-b537-4f77-9dea-9abde70b5147',
+ type: 'track',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Unable to process without anonymousId or userId',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'CLEVERTAP',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/clevertap/router/data.ts b/test/integrations/destinations/clevertap/router/data.ts
new file mode 100644
index 00000000000..5f25bbe83e7
--- /dev/null
+++ b/test/integrations/destinations/clevertap/router/data.ts
@@ -0,0 +1,235 @@
+export const data = [
+ {
+ name: 'clevertap',
+ description: 'simple router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ passcode: 'dummypasscode',
+ accountId: 'dummyAccountId',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: 'Android', version: '' },
+ screen: { density: 2 },
+ device: {
+ id: 'f54bb572361c4fd1',
+ name: 'whyred',
+ type: 'Android',
+ model: 'Redmi Note 5 Pro',
+ manufacturer: 'Xiaomi',
+ token: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ ts: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ email: 'dummyuser@gmail.com',
+ name: 'Dummy User',
+ phone: '98765434210',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: { Office: 'Trastkiv', Country: 'Russia' },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ passcode: 'dummypasscode',
+ accountId: 'dummyAccountId',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ event: 'Random',
+ properties: { country_region: 'India', test: 'abc' },
+ receivedAt: '2021-08-20T12:49:07.691Z',
+ rudderId: '138c4214-b537-4f77-9dea-9abde70b5147',
+ type: 'track',
+ anonymousId: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ passcode: 'dummypasscode',
+ accountId: 'dummyAccountId',
+ trackAnonymous: true,
+ },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ type: 'group',
+ anonymousId: 'anon-id-new',
+ name: 'Rudder',
+ properties: { title: 'Home', path: '/' },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ destType: 'clevertap',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ batched: true,
+ endpoint: 'https://api.clevertap.com/1/upload',
+ headers: {
+ 'X-CleverTap-Account-Id': 'dummyAccountId',
+ 'X-CleverTap-Passcode': 'dummypasscode',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ d: [
+ {
+ type: 'profile',
+ ts: 1571043797,
+ profileData: {
+ Email: 'dummyuser@gmail.com',
+ Name: 'Dummy User',
+ Phone: '98765434210',
+ Gender: 'M',
+ Employed: true,
+ DOB: '1614775793',
+ Education: 'Science',
+ Married: true,
+ 'Customer Type': 'Prime',
+ graduate: true,
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ address:
+ '{"city":"kolkata","country":"India","postalCode":789223,"state":"WB","street":""}',
+ custom_mappings: '{"Office":"Trastkiv","Country":"Russia"}',
+ custom_tags: '["Test_User","Interested_User","DIY_Hobby"]',
+ },
+ objectId: 'anon_id',
+ },
+ {
+ type: 'token',
+ tokenData: {
+ id: 'frfsgvrwe:APfdsafsgdfsgghfgfgjkhfsfgdhjhbvcvnetry767456fxsasdf',
+ type: 'fcm',
+ },
+ objectId: 'anon_id',
+ },
+ {
+ evtName: 'Random',
+ evtData: { country_region: 'India', test: 'abc' },
+ type: 'event',
+ objectId: 'cd3a4439-7df0-4475-acb9-6659c7c4dfe3',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ passcode: 'dummypasscode',
+ accountId: 'dummyAccountId',
+ trackAnonymous: true,
+ enableObjectIdMapping: true,
+ },
+ },
+ },
+ {
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'Message type not supported',
+ statTags: {
+ destType: 'CLEVERTAP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ destination: {
+ Config: {
+ passcode: 'dummypasscode',
+ accountId: 'dummyAccountId',
+ trackAnonymous: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/clickup/network.ts b/test/integrations/destinations/clickup/network.ts
new file mode 100644
index 00000000000..2cb7cde34fc
--- /dev/null
+++ b/test/integrations/destinations/clickup/network.ts
@@ -0,0 +1,247 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.clickup.com/api/v2/list/correctListId123/field',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ fields: [
+ {
+ id: '19d3ac4e-2b1e-4569-b33e-ff86c7d94d6e',
+ name: 'Labels',
+ type: 'labels',
+ type_config: {
+ options: [
+ {
+ id: '32c81c1c-cf53-4829-92f5-0f0270d27a45',
+ label: 'Option 1',
+ color: {},
+ },
+ {
+ id: '7e24f329-9dd9-4e68-b426-2c70af6f9347',
+ label: 'Option 2',
+ color: {},
+ },
+ ],
+ },
+ date_created: '1661964865880',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: '22eaffee-ffec-4c3b-bdae-56e69d55eecd',
+ name: 'Payment Status',
+ type: 'drop_down',
+ type_config: {
+ default: 0,
+ placeholder: {},
+ new_drop_down: true,
+ options: [
+ {
+ id: 'e109e36b-a052-4a31-af16-25da7324990f',
+ name: 'Sent Request',
+ color: '#FF7FAB',
+ orderindex: 0,
+ },
+ {
+ id: '3a3b4512-2896-44f7-8075-2ff37777fe24',
+ name: 'Quote sent',
+ color: '#EA80FC',
+ orderindex: 1,
+ },
+ {
+ id: '7afcb6fb-cec8-41d8-bf0c-039a9db28460',
+ name: 'Pending',
+ color: '#ff7800',
+ orderindex: 2,
+ },
+ {
+ id: '890ecf28-bdd4-4f53-92cc-bc4edb696fcd',
+ name: 'Payment Recieved',
+ color: '#2ecd6f',
+ orderindex: 3,
+ },
+ {
+ id: 'e89f7dd7-fd24-4b32-ac4d-f174d8ca914f',
+ name: 'n/a',
+ color: '#b5bcc2',
+ orderindex: 4,
+ },
+ ],
+ },
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: '4b7a29be-e261-4340-8f3f-e6de838473e5',
+ name: 'Plan',
+ type: 'drop_down',
+ type_config: {
+ default: 0,
+ placeholder: {},
+ new_drop_down: true,
+ options: [
+ {
+ id: '4b9366a7-2592-4b7a-909a-ed4af705e27c',
+ name: 'Unlimited',
+ color: '#02BCD4',
+ orderindex: 0,
+ },
+ {
+ id: 'c5032049-8c05-44e9-a000-3a071d457b8f',
+ name: 'Business',
+ color: '#1bbc9c',
+ orderindex: 1,
+ },
+ {
+ id: '9fb08801-1130-4650-8e2e-28578344ff3c',
+ name: 'Enterprise',
+ color: '#2ecd6f',
+ orderindex: 2,
+ },
+ ],
+ },
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: '4bfebc00-9d4a-40d1-aef8-5a87b610186c',
+ name: 'Contact Title',
+ type: 'text',
+ type_config: {},
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: '666f74bf-6d87-41f3-8735-ccf0efe066dd',
+ name: 'Date',
+ type: 'date',
+ type_config: {},
+ date_created: '1662379321069',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: 'a5f5044a-cbad-4caf-bcbb-4cd32bd8db7c',
+ name: 'Industry',
+ type: 'drop_down',
+ type_config: {
+ default: 0,
+ placeholder: {},
+ options: [
+ {
+ id: '75173398-257f-42b6-8bae-4cf767fa99ab',
+ name: 'Engineering',
+ color: '#04A9F4',
+ orderindex: 0,
+ },
+ {
+ id: 'c7f9b6f5-cd98-4609-af10-68a8710cc1bf',
+ name: 'Retail',
+ color: '#ff7800',
+ orderindex: 1,
+ },
+ {
+ id: 'dbe84940-b4e8-4a29-8491-e1aa5f2be4e2',
+ name: 'Hospitality',
+ color: '#2ecd6f',
+ orderindex: 2,
+ },
+ ],
+ },
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: 'b01b32fd-94d3-43e6-9f31-2c855ff169cd',
+ name: 'Url',
+ type: 'url',
+ type_config: {},
+ date_created: '1661970432587',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: 'c9b83d91-b979-4b34-b4bd-88bf9cf2b9a6',
+ name: 'Phone Number',
+ type: 'phone',
+ type_config: {},
+ date_created: '1661970795061',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: 'd0201829-ddcd-4b97-b71f-0f9e672488f2',
+ name: 'Account Size',
+ type: 'number',
+ type_config: {},
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: 'ea6c1e48-2abf-4328-b228-79c213e147c8',
+ name: 'Location',
+ type: 'location',
+ type_config: {},
+ date_created: '1662229589329',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: 'ebe825fb-92de-41ce-a29c-25018da039b4',
+ name: 'Email',
+ type: 'email',
+ type_config: {},
+ date_created: '1660124553414',
+ hide_from_guests: false,
+ required: {},
+ },
+ {
+ id: 'f431cda3-a575-4a05-ba8d-583d9b6cb2df',
+ name: 'Rating',
+ type: 'emoji',
+ type_config: {
+ count: 5,
+ code_point: '2b50',
+ },
+ date_created: '1661963909454',
+ hide_from_guests: false,
+ required: false,
+ },
+ {
+ id: 'ffbe4f03-cbc3-4077-8fea-9e5d08b4dceb',
+ name: 'Money In INR',
+ type: 'currency',
+ type_config: {
+ default: {},
+ precision: 2,
+ currency_type: 'INR',
+ },
+ date_created: '1661428276019',
+ hide_from_guests: false,
+ required: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.clickup.com/api/v2/list/correctListId456/field',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ fields: [],
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/clickup/processor/data.ts b/test/integrations/destinations/clickup/processor/data.ts
new file mode 100644
index 00000000000..686bf670e2e
--- /dev/null
+++ b/test/integrations/destinations/clickup/processor/data.ts
@@ -0,0 +1,818 @@
+export const data = [
+ {
+ name: 'clickup',
+ description: 'Invalid priority',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ priority: 0,
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Invalid value specified for priority. Value must be Integer and in range "[1,4]"',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Custom field: Invalid phone number',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'phone',
+ to: 'Phone Number',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ phone: '9999999999',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The provided phone number is invalid',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Custom field: Invalid email',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'email',
+ to: 'Email',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ email: 'test.com',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The provided email is invalid',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Custom field: Invalid url',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'url',
+ to: 'Url',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ url: 'www.test.com',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The provided url is invalid',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Custom field: Invalid location latitude',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'location',
+ to: 'Location',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ location: {
+ lat: -100,
+ lng: 124,
+ formattedAddress: 'Gold Coast QLD, Australia',
+ },
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Invalid value specified for latitude. Latitude must be in range "[-90, 90]"',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Custom field: Invalid rating',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'rating',
+ to: 'Rating',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ rating: '7',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Invalid value specified for rating. Value must be in range "[0,5]"',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Creating task with valid custom fields values',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ {
+ from: 'industry',
+ to: 'Industry',
+ },
+ {
+ from: 'Payment Status',
+ to: 'Payment Status',
+ },
+ {
+ from: 'labelKey',
+ to: 'Labels',
+ },
+ {
+ from: 'locationKey',
+ to: 'Location',
+ },
+ {
+ from: 'phone',
+ to: 'Phone Number',
+ },
+ {
+ from: 'email',
+ to: 'Email',
+ },
+ {
+ from: 'url',
+ to: 'Url',
+ },
+ {
+ from: 'rating',
+ to: 'Rating',
+ },
+ {
+ from: 'plan',
+ to: 'Plan',
+ },
+ {
+ from: 'contactTitle',
+ to: 'Contact Title',
+ },
+ {
+ from: 'date',
+ to: 'Date',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ description: 'Creating task with valid custom fields values',
+ tags: ['testing', 'custom fields'],
+ timeEstimate: 10800000,
+ status: 'Ready',
+ priority: 1,
+ dueDate: '2022-02-25T13:39:21.032Z',
+ includeDueDateTime: true,
+ startDate: '2022-01-20T13:39:21.032Z',
+ includeStartDateTime: 'true',
+ notifyAll: false,
+ industry: 'Retail',
+ 'Payment Status': 'Pending',
+ labelKey: ['option 1', 'option 2', 'option 3'],
+ locationKey: {
+ lat: -20,
+ lng: 124,
+ formattedAddress: 'Gold Coast QLD, Australia',
+ },
+ phone: '+12233445567',
+ email: 'test123@example.com',
+ url: 'https://www.rudderstack.com/',
+ rating: 3,
+ plan: 'Business',
+ contactTitle: 'VP of Operations',
+ date: '2022-02-25T13:39:21.032Z',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId123/task',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'pk_123',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Product Viewed',
+ description: 'Creating task with valid custom fields values',
+ tags: ['testing', 'custom fields'],
+ time_estimate: 10800000,
+ status: 'Ready',
+ priority: 1,
+ due_date: 1645796361032,
+ due_date_time: true,
+ start_date: 1642685961032,
+ start_date_time: 'true',
+ notify_all: false,
+ custom_fields: [
+ {
+ id: 'a5f5044a-cbad-4caf-bcbb-4cd32bd8db7c',
+ value: 'c7f9b6f5-cd98-4609-af10-68a8710cc1bf',
+ },
+ {
+ id: '22eaffee-ffec-4c3b-bdae-56e69d55eecd',
+ value: '7afcb6fb-cec8-41d8-bf0c-039a9db28460',
+ },
+ {
+ id: '19d3ac4e-2b1e-4569-b33e-ff86c7d94d6e',
+ value: [
+ '32c81c1c-cf53-4829-92f5-0f0270d27a45',
+ '7e24f329-9dd9-4e68-b426-2c70af6f9347',
+ ],
+ },
+ {
+ id: 'ea6c1e48-2abf-4328-b228-79c213e147c8',
+ value: {
+ location: {
+ lat: -20,
+ lng: 124,
+ },
+ formatted_address: 'Gold Coast QLD, Australia',
+ },
+ },
+ {
+ id: 'c9b83d91-b979-4b34-b4bd-88bf9cf2b9a6',
+ value: '+12233445567',
+ },
+ {
+ id: 'ebe825fb-92de-41ce-a29c-25018da039b4',
+ value: 'test123@example.com',
+ },
+ {
+ id: 'b01b32fd-94d3-43e6-9f31-2c855ff169cd',
+ value: 'https://www.rudderstack.com/',
+ },
+ {
+ id: 'f431cda3-a575-4a05-ba8d-583d9b6cb2df',
+ value: 3,
+ },
+ {
+ id: '4b7a29be-e261-4340-8f3f-e6de838473e5',
+ value: 'c5032049-8c05-44e9-a000-3a071d457b8f',
+ },
+ {
+ id: '4bfebc00-9d4a-40d1-aef8-5a87b610186c',
+ value: 'VP of Operations',
+ },
+ {
+ id: '666f74bf-6d87-41f3-8735-ccf0efe066dd',
+ value: 1645796361032,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Creating task with assignees',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ taskName: 'Transformer Testing',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'clickUpAssigneeId',
+ id: 61205104,
+ },
+ {
+ type: 'clickUpAssigneeId',
+ id: 61217234,
+ },
+ {
+ type: 'clickUpAssigneeId',
+ id: 61228575,
+ },
+ ],
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId123/task',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'pk_123',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Transformer Testing',
+ assignees: [61205104, 61217234, 61228575],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Event filtering : Sending non whitelisted event when some events are whitelisted',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ whitelistedEvents: [
+ {
+ eventName: 'Anonymous Page Visit',
+ },
+ {
+ eventName: 'Product Viewed',
+ },
+ {
+ eventName: '',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Credit Card Added',
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'The event was discarded as it was not allow listed in the destination configuration',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Event filtering : No event is whitelisted',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ {
+ eventName: '',
+ },
+ {
+ eventName: '',
+ },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Credit Card Added',
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'The event was discarded as it was not allow listed in the destination configuration',
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'clickup',
+ description: 'Creating task using listId from externalId array',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ },
+ ID: 'clickup-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'anonymous page visit',
+ context: {
+ externalId: [
+ {
+ type: 'clickUpListId',
+ id: 'correctListId456',
+ },
+ ],
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId456/task',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'pk_123',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'anonymous page visit',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/clickup/router/data.ts b/test/integrations/destinations/clickup/router/data.ts
new file mode 100644
index 00000000000..b77cb90b473
--- /dev/null
+++ b/test/integrations/destinations/clickup/router/data.ts
@@ -0,0 +1,303 @@
+export const data = [
+ {
+ name: 'clickup',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ description: 'Creating task using listId from externalId array',
+ destination: {
+ Config: { apiToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'clickup-1234',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'anonymous page visit',
+ context: { externalId: [{ type: 'clickUpListId', id: 'correctListId456' }] },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ {
+ description: 'Creating task with assignees',
+ destination: {
+ Config: { apiToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'clickup-1234',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: { taskName: 'Transformer Testing' },
+ context: {
+ externalId: [
+ { type: 'clickUpAssigneeId', id: 61205104 },
+ { type: 'clickUpAssigneeId', id: 61217234 },
+ { type: 'clickUpAssigneeId', id: 61228575 },
+ ],
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ {
+ description: 'Creating task with valid custom fields values',
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [
+ { from: 'industry', to: 'Industry' },
+ { from: 'Payment Status', to: 'Payment Status' },
+ { from: 'labelKey', to: 'Labels' },
+ { from: 'locationKey', to: 'Location' },
+ { from: 'phone', to: 'Phone Number' },
+ { from: 'email', to: 'Email' },
+ { from: 'url', to: 'Url' },
+ { from: 'rating', to: 'Rating' },
+ { from: 'plan', to: 'Plan' },
+ { from: 'contactTitle', to: 'Contact Title' },
+ { from: 'date', to: 'Date' },
+ ],
+ },
+ ID: 'clickup-1234',
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ description: 'Creating task with valid custom fields values',
+ tags: ['testing', 'custom fields'],
+ timeEstimate: 10800000,
+ status: 'Ready',
+ priority: 1,
+ dueDate: '2022-02-25T13:39:21.032Z',
+ includeDueDateTime: true,
+ startDate: '2022-01-20T13:39:21.032Z',
+ includeStartDateTime: 'true',
+ notifyAll: false,
+ industry: 'Retail',
+ 'Payment Status': 'Pending',
+ labelKey: ['option 1', 'option 2', 'option 3'],
+ locationKey: {
+ lat: -20,
+ lng: 124,
+ formattedAddress: 'Gold Coast QLD, Australia',
+ },
+ phone: '+12233445567',
+ email: 'test123@example.com',
+ url: 'https://www.rudderstack.com/',
+ rating: 3,
+ plan: 'Business',
+ contactTitle: 'VP of Operations',
+ date: '2022-02-25T13:39:21.032Z',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ {
+ description: 'Custom field: Invalid location latitude',
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [{ from: 'location', to: 'Location' }],
+ },
+ ID: 'clickup-1234',
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ location: { lat: -100, lng: 124, formattedAddress: 'Gold Coast QLD, Australia' },
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ destType: 'clickup',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ batchedRequest: {
+ body: { FORM: {}, JSON: { name: 'anonymous page visit' }, JSON_ARRAY: {}, XML: {} },
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId456/task',
+ files: {},
+ headers: { Authorization: 'pk_123', 'Content-Type': 'application/json' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: { apiToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'clickup-1234',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: { assignees: [61205104, 61217234, 61228575], name: 'Transformer Testing' },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId123/task',
+ files: {},
+ headers: { Authorization: 'pk_123', 'Content-Type': 'application/json' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: { apiToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'clickup-1234',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ custom_fields: [
+ {
+ id: 'a5f5044a-cbad-4caf-bcbb-4cd32bd8db7c',
+ value: 'c7f9b6f5-cd98-4609-af10-68a8710cc1bf',
+ },
+ {
+ id: '22eaffee-ffec-4c3b-bdae-56e69d55eecd',
+ value: '7afcb6fb-cec8-41d8-bf0c-039a9db28460',
+ },
+ {
+ id: '19d3ac4e-2b1e-4569-b33e-ff86c7d94d6e',
+ value: [
+ '32c81c1c-cf53-4829-92f5-0f0270d27a45',
+ '7e24f329-9dd9-4e68-b426-2c70af6f9347',
+ ],
+ },
+ {
+ id: 'ea6c1e48-2abf-4328-b228-79c213e147c8',
+ value: {
+ formatted_address: 'Gold Coast QLD, Australia',
+ location: { lat: -20, lng: 124 },
+ },
+ },
+ { id: 'c9b83d91-b979-4b34-b4bd-88bf9cf2b9a6', value: '+12233445567' },
+ { id: 'ebe825fb-92de-41ce-a29c-25018da039b4', value: 'test123@example.com' },
+ {
+ id: 'b01b32fd-94d3-43e6-9f31-2c855ff169cd',
+ value: 'https://www.rudderstack.com/',
+ },
+ { id: 'f431cda3-a575-4a05-ba8d-583d9b6cb2df', value: 3 },
+ {
+ id: '4b7a29be-e261-4340-8f3f-e6de838473e5',
+ value: 'c5032049-8c05-44e9-a000-3a071d457b8f',
+ },
+ { id: '4bfebc00-9d4a-40d1-aef8-5a87b610186c', value: 'VP of Operations' },
+ { id: '666f74bf-6d87-41f3-8735-ccf0efe066dd', value: 1645796361032 },
+ ],
+ name: 'Product Viewed',
+ description: 'Creating task with valid custom fields values',
+ tags: ['testing', 'custom fields'],
+ time_estimate: 10800000,
+ status: 'Ready',
+ priority: 1,
+ due_date: 1645796361032,
+ due_date_time: true,
+ start_date: 1642685961032,
+ start_date_time: 'true',
+ notify_all: false,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.clickup.com/api/v2/list/correctListId123/task',
+ files: {},
+ headers: { Authorization: 'pk_123', 'Content-Type': 'application/json' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ keyToCustomFieldName: [
+ { from: 'industry', to: 'Industry' },
+ { from: 'Payment Status', to: 'Payment Status' },
+ { from: 'labelKey', to: 'Labels' },
+ { from: 'locationKey', to: 'Location' },
+ { from: 'phone', to: 'Phone Number' },
+ { from: 'email', to: 'Email' },
+ { from: 'url', to: 'Url' },
+ { from: 'rating', to: 'Rating' },
+ { from: 'plan', to: 'Plan' },
+ { from: 'contactTitle', to: 'Contact Title' },
+ { from: 'date', to: 'Date' },
+ ],
+ listId: 'correctListId123',
+ },
+ ID: 'clickup-1234',
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ destination: {
+ Config: {
+ apiToken: 'pk_123',
+ listId: 'correctListId123',
+ keyToCustomFieldName: [{ from: 'location', to: 'Location' }],
+ },
+ ID: 'clickup-1234',
+ },
+ batched: false,
+ error: 'Invalid value specified for latitude. Latitude must be in range "[-90, 90]"',
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ statTags: {
+ destType: 'CLICKUP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/courier/router/data.ts b/test/integrations/destinations/courier/router/data.ts
index a3a32371972..268504b9033 100644
--- a/test/integrations/destinations/courier/router/data.ts
+++ b/test/integrations/destinations/courier/router/data.ts
@@ -15,28 +15,14 @@ export const data = [
channel: 'web',
event: 'Product Added',
userId: 'test123',
- properties: {
- price: 999,
- quantity: 1,
- },
- context: {
- traits: {
- firstName: 'John',
- age: 27,
- },
- },
+ properties: { price: 999, quantity: 1 },
+ context: { traits: { firstName: 'John', age: 27 } },
rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
},
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- },
- },
- metadata: {
- jobId: 1,
- },
+ destination: { Config: { apiKey: 'dummyApiKey' } },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
message: {
@@ -59,9 +45,7 @@ export const data = [
trackNamedPages: true,
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'courier',
@@ -92,16 +76,8 @@ export const data = [
channel: 'web',
event: 'Product Added',
userId: 'test123',
- properties: {
- price: 999,
- quantity: 1,
- },
- context: {
- traits: {
- firstName: 'John',
- age: 27,
- },
- },
+ properties: { price: 999, quantity: 1 },
+ context: { traits: { firstName: 'John', age: 27 } },
rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
@@ -112,26 +88,14 @@ export const data = [
},
files: {},
},
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- },
- },
- metadata: [
- {
- jobId: 1,
- },
- ],
+ destination: { Config: { apiKey: 'dummyApiKey' } },
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
batched: false,
error: 'apiKey is required',
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
destType: 'COURIER',
errorCategory: 'dataValidation',
diff --git a/test/integrations/destinations/criteo_audience/dataDelivery/business.ts b/test/integrations/destinations/criteo_audience/dataDelivery/business.ts
new file mode 100644
index 00000000000..f30bf73d7a9
--- /dev/null
+++ b/test/integrations/destinations/criteo_audience/dataDelivery/business.ts
@@ -0,0 +1,255 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateProxyV1Payload, generateMetadata } from '../../../testUtils';
+export const headers = {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+};
+export const params = {
+ destination: 'criteo_audience',
+};
+const method = 'PATCH';
+
+export const V1BusinessTestScenarion: ProxyV1TestData[] = [
+ {
+ id: 'criteo_audience_business_0',
+ name: 'criteo_audience',
+ description: '[Business]:: Test for gum type audience with gumCallerId with success response',
+ successCriteria: 'Should return a 200 status code with a success message',
+ scenario: 'business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'remove',
+ identifierType: 'gum',
+ identifiers: ['sample_gum3'],
+ internalIdentifiers: false,
+ gumCallerId: '329739',
+ },
+ },
+ },
+ params,
+ headers,
+ method,
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34894/contactlist',
+ },
+ [generateMetadata(1)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: '""',
+ metadata: generateMetadata(1),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_business_1',
+ name: 'criteo_audience',
+ scenario: 'business',
+ description: '[Business]:: Test for email type audience to add users with success response',
+ successCriteria: 'Should return a 200 status code with a success message',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ method: 'POST',
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'email',
+ internalIdentifiers: false,
+ identifiers: [
+ 'alex@email.com',
+ 'amy@email.com',
+ 'van@email.com',
+ 'alex@email.com',
+ 'amy@email.com',
+ 'van@email.com',
+ ],
+ },
+ },
+ },
+ params,
+ headers,
+ method,
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34894/contactlist',
+ },
+ [generateMetadata(2)],
+ ),
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: '""',
+ metadata: generateMetadata(2),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_business_2',
+ name: 'criteo_audience',
+ scenario: 'business',
+ description: '[Business]:: Test for mobile type audience to remove users with success response',
+ successCriteria: 'Should return a 200 status code with a success message',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ method: 'POST',
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'remove',
+ identifierType: 'madid',
+ internalIdentifiers: false,
+ identifiers: [
+ 'sample_madid',
+ 'sample_madid_1',
+ 'sample_madid_2',
+ 'sample_madid_10',
+ 'sample_madid_13',
+ 'sample_madid_11',
+ 'sample_madid_12',
+ ],
+ },
+ },
+ },
+ params,
+ headers,
+ method,
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34893/contactlist',
+ },
+ [generateMetadata(3)],
+ ),
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: '""',
+ metadata: generateMetadata(3),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_business_3',
+ name: 'criteo_audience',
+ scenario: 'business',
+ description: '[Business]:: Test for mobile type audience where audienceId is invalid',
+ successCriteria:
+ 'Should return a 400 status code with an error audience-invalid. It should also have the invalid audienceId in the error message as follows: "Audience is invalid"',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ method: 'POST',
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ params,
+ headers,
+ method,
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34896/contactlist',
+ },
+ [generateMetadata(4)],
+ ),
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'AudienceId is Invalid. Please Provide Valid AudienceId',
+ response: [
+ {
+ error:
+ '{"errors":[{"traceIdentifier":"80a1a0ba3981b04da847d05700752c77","type":"authorization","code":"audience-invalid"}]}',
+ metadata: generateMetadata(4),
+ statusCode: 400,
+ },
+ ],
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/criteo_audience/dataDelivery/data.ts b/test/integrations/destinations/criteo_audience/dataDelivery/data.ts
index bc3af8f22d9..c603ef66648 100644
--- a/test/integrations/destinations/criteo_audience/dataDelivery/data.ts
+++ b/test/integrations/destinations/criteo_audience/dataDelivery/data.ts
@@ -1,530 +1,541 @@
-export const data = [
+import { generateMetadata } from '../../../testUtils';
+import { V1BusinessTestScenarion } from './business';
+import { v1OauthScenarios } from './oauth';
+import { v1OtherScenarios } from './other';
+
+const v0testCases = [
{
- "name": "criteo_audience",
- "description": "Test 0",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34894/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34894/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "remove",
- "identifierType": "gum",
- "identifiers": [
- "sample_gum3"
- ],
- "internalIdentifiers": false,
- "gumCallerId": "329739"
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'remove',
+ identifierType: 'gum',
+ identifiers: ['sample_gum3'],
+ internalIdentifiers: false,
+ gumCallerId: '329739',
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(1),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: '',
+ status: 200,
+ },
+ },
+ },
+ },
},
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": "",
- "status": 200
- }
- }
- }
- }
- }
},
{
- "name": "criteo_audience",
- "description": "Test 1",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/3485/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/3485/contactlist/expiredAccessToken',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(2),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 401,
- "body": {
- "output": {
- "status": 401,
- "authErrorCategory": "REFRESH_TOKEN",
- "destinationResponse": {
- "errors": [
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: {
+ errors: [
{
- "traceIdentifier": "80a1a0ba3981b04da847d05700752c77",
- "type": "authorization",
- "code": "authorization-token-expired",
- "instance": "/2022-10/audiences/123/contactlist",
- "title": "The authorization token has expired"
- }
- ]
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ code: 'authorization-token-expired',
+ instance: '/2022-10/audiences/123/contactlist',
+ title: 'The authorization token has expired',
+ },
+ ],
},
- "message": "The authorization token has expired during criteo_audience response transformation",
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
+ message:
+ 'The authorization token has expired during criteo_audience response transformation',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
},
{
- "name": "criteo_audience",
- "description": "Test 2",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34895/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34895/contactlist/invalidAccessToken',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ files: {},
+ params: {
+ destination: 'criteo_audience',
+ },
+ userId: '1234',
+ metadata: generateMetadata(3),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 401,
- "body": {
- "output": {
- "status": 401,
- "authErrorCategory": "REFRESH_TOKEN",
- "destinationResponse": {
- "errors": [
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: {
+ errors: [
{
- "traceIdentifier": "80a1a0ba3981b04da847d05700752c77",
- "type": "authorization",
- "code": "authorization-token-invalid",
- "instance": "/2022-10/audiences/123/contactlist",
- "title": "The authorization header is invalid"
- }
- ]
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ code: 'authorization-token-invalid',
+ instance: '/2022-10/audiences/123/contactlist',
+ title: 'The authorization header is invalid',
+ },
+ ],
+ },
+ message:
+ 'The authorization header is invalid during criteo_audience response transformation',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
- "message": "The authorization header is invalid during criteo_audience response transformation",
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
+ },
+ },
+ },
+ },
},
{
- "name": "criteo_audience",
- "description": "Test 3",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34896/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 3',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34896/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(4),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 400,
- "body": {
- "output": {
- "message": "AudienceId is Invalid. Please Provide Valid AudienceId",
- "destinationResponse": {
- "response": {
- "errors": [
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ message: 'AudienceId is Invalid. Please Provide Valid AudienceId',
+ destinationResponse: {
+ response: {
+ errors: [
{
- "code": "audience-invalid",
- "traceIdentifier": "80a1a0ba3981b04da847d05700752c77",
- "type": "authorization"
- }
- ]
+ code: 'audience-invalid',
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ },
+ ],
},
- "status": 404
+ status: 404,
},
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "meta": "instrumentation",
- "module": "destination"
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
},
- "status": 400
- }
- }
- }
- }
+ status: 400,
+ },
+ },
+ },
+ },
},
{
- "name": "criteo_audience",
- "description": "Test 4",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34897/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 4',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34897/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(5),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 500,
- "body": {
- "output": {
- "destinationResponse": {
- "response": {
- "errors": [
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {
+ errors: [
{
- "code": "audience-invalid",
- "traceIdentifier": "80a1a0ba3981b04da847d05700752c77",
- "type": "authorization"
- }
- ]
+ code: 'audience-invalid',
+ traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
+ type: 'authorization',
+ },
+ ],
},
- "status": 503
+ status: 503,
},
- "message": "Request Failed: during criteo_audience response transformation (Retryable)",
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "feature": "dataDelivery",
- "implementation": "native",
- "errorType": "retryable",
- "module": "destination"
+ message: 'Request Failed: during criteo_audience response transformation (Retryable)',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ errorType: 'retryable',
+ module: 'destination',
},
- "status": 500
- }
- }
- }
- }
+ status: 500,
+ },
+ },
+ },
+ },
},
{
- "name": "criteo_audience",
- "description": "Test 5",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34898/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 5',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34898/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(6),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 429,
- "body": {
- "output": {
- "destinationResponse": {
- "response": {},
- "status": 429
+ output: {
+ response: {
+ status: 429,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {},
+ status: 429,
},
- "message": "Request Failed: during criteo_audience response transformation - due to Request Limit exceeded, (Throttled)",
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "throttled",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
+ message:
+ 'Request Failed: during criteo_audience response transformation - due to Request Limit exceeded, (Throttled)',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'throttled',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
- "status": 429
- }
- }
- }
- }
+ status: 429,
+ },
+ },
+ },
+ },
},
{
- "name": "criteo_audience",
- "description": "Test 6",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "PATCH",
- "endpoint": "https://api.criteo.com/2022-10/audiences/34899/contactlist",
- "headers": {
- "Authorization": "Bearer success_access_token",
- "Content-Type": "application/json",
- "Accept": "application/json"
+ name: 'criteo_audience',
+ description: 'Test 6',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34899/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
},
- "body": {
- "JSON": {
- "data": {
- "type": "ContactlistAmendment",
- "attributes": {
- "operation": "add",
- "identifierType": "madid",
- "identifiers": [
- "sample_madid",
- "sample_madid_1",
- "sample_madid_2"
- ],
- "internalIdentifiers": false
- }
- }
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ params: {
+ destination: 'criteo_audience',
},
- "files": {},
- "params": {
- "destination": "criteo_audience"
- }
+ userId: '1234',
+ metadata: generateMetadata(7),
+ destinationConfig: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 400,
- "body": {
- "output": {
- "destinationResponse": {
- "response": {
- "message": "unknown error"
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {
+ message: 'unknown error',
},
- "status": 410
+ status: 410,
},
- "message": "Request Failed: during criteo_audience response transformation with status \"410\" due to \"{\"message\":\"unknown error\"}\", (Aborted) ",
- "statTags": {
- "destType": "CRITEO_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
+ message:
+ 'Request Failed: during criteo_audience response transformation with status "410" due to "{"message":"unknown error"}", (Aborted) ',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
- "status": 400
- }
- }
- }
- }
- }
-]
\ No newline at end of file
+ status: 400,
+ },
+ },
+ },
+ },
+ },
+];
+
+export const data = [
+ ...v0testCases,
+ ...V1BusinessTestScenarion,
+ ...v1OauthScenarios,
+ ...v1OtherScenarios,
+];
diff --git a/test/integrations/destinations/criteo_audience/dataDelivery/oauth.ts b/test/integrations/destinations/criteo_audience/dataDelivery/oauth.ts
new file mode 100644
index 00000000000..982397f7c33
--- /dev/null
+++ b/test/integrations/destinations/criteo_audience/dataDelivery/oauth.ts
@@ -0,0 +1,133 @@
+import { params, headers } from './business';
+import { generateProxyV1Payload, generateMetadata } from '../../../testUtils';
+
+const commonStatTags = {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+export const v1OauthScenarios = [
+ {
+ id: 'criteo_audience_oauth_0',
+ name: 'criteo_audience',
+ description: '[OAUTH]:: Test expired access token',
+ successCriteria: 'Should return a 401 status code with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ params,
+ headers,
+ method: 'PATCH',
+ endpoint:
+ 'https://api.criteo.com/2022-10/audiences/3485/contactlist/expiredAccessToken',
+ },
+ [generateMetadata(1)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ authErrorCategory: 'REFRESH_TOKEN',
+ response: [
+ {
+ error:
+ 'The authorization token has expired during criteo_audience response transformation',
+ metadata: generateMetadata(1),
+ statusCode: 401,
+ },
+ ],
+ message:
+ 'The authorization token has expired during criteo_audience response transformation',
+ statTags: commonStatTags,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_oauth_1',
+ name: 'criteo_audience',
+ description: '[OAUTH]:: Test invalid access token',
+ successCriteria:
+ 'We should get a 401 status code with errorCode authorization-token-invalid. As we need to refresh the token for these conditions, authErrorCategory should be REFRESH_TOKEN',
+ scenario: 'oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ params,
+ headers,
+ method: 'PATCH',
+ endpoint:
+ 'https://api.criteo.com/2022-10/audiences/34895/contactlist/invalidAccessToken',
+ },
+ [generateMetadata(2)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ authErrorCategory: 'REFRESH_TOKEN',
+ response: [
+ {
+ error:
+ 'The authorization header is invalid during criteo_audience response transformation',
+ metadata: generateMetadata(2),
+ statusCode: 401,
+ },
+ ],
+ statTags: commonStatTags,
+ message:
+ 'The authorization header is invalid during criteo_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/criteo_audience/dataDelivery/other.ts b/test/integrations/destinations/criteo_audience/dataDelivery/other.ts
new file mode 100644
index 00000000000..145be62528a
--- /dev/null
+++ b/test/integrations/destinations/criteo_audience/dataDelivery/other.ts
@@ -0,0 +1,197 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { params, headers } from './business';
+import { generateProxyV1Payload, generateMetadata } from '../../../testUtils';
+
+export const v1OtherScenarios: ProxyV1TestData[] = [
+ {
+ id: 'criteo_audience_other_0',
+ name: 'criteo_audience',
+ description: '[Other]:: Test for checking service unavailable scenario',
+ successCriteria: 'Should return a 500 status code with',
+ scenario: 'other',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ headers,
+ params,
+ method: 'PATCH',
+ endpoint: 'https://random_test_url/test_for_internal_server_error',
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ },
+ [generateMetadata(1)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 500,
+ response: [
+ {
+ error: '""',
+ metadata: generateMetadata(1),
+ statusCode: 500,
+ },
+ ],
+ message: 'Request Failed: during criteo_audience response transformation (Retryable)',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ errorType: 'retryable',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_other_1',
+ name: 'criteo_audience',
+ description: '[Other]:: Test for checking throttling scenario',
+ successCriteria: 'Should return a 429 status code',
+ scenario: 'other',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ headers,
+ params,
+ method: 'PATCH',
+ endpoint: 'https://random_test_url/test_for_too_many_requests',
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ },
+ [generateMetadata(2)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 429,
+ response: [
+ {
+ error: '{}',
+ metadata: generateMetadata(2),
+ statusCode: 429,
+ },
+ ],
+ message:
+ 'Request Failed: during criteo_audience response transformation - due to Request Limit exceeded, (Throttled)',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ errorType: 'throttled',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'criteo_audience_other_2',
+ name: 'criteo_audience',
+ description: '[Other]:: Test for checking unknown error scenario',
+ successCriteria: 'Should return a 410 status code and abort the event',
+ scenario: 'other',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ headers,
+ params,
+ method: 'PATCH',
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34899/contactlist',
+ },
+ [generateMetadata(3)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ response: [
+ {
+ error: '{"message":"unknown error"}',
+ metadata: generateMetadata(3),
+ statusCode: 400,
+ },
+ ],
+ message:
+ 'Request Failed: during criteo_audience response transformation with status "410" due to "{"message":"unknown error"}", (Aborted) ',
+ statTags: {
+ destType: 'CRITEO_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/criteo_audience/network.ts b/test/integrations/destinations/criteo_audience/network.ts
index 959e8a21127..7ccf649e2a0 100644
--- a/test/integrations/destinations/criteo_audience/network.ts
+++ b/test/integrations/destinations/criteo_audience/network.ts
@@ -1,3 +1,23 @@
+const headers = {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'User-Agent': 'RudderLabs',
+};
+const params = { destination: 'criteo_audience' };
+const method = 'PATCH';
+const commonData = {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'madid',
+ identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ internalIdentifiers: false,
+ },
+ },
+};
+
export const networkCallsData = [
{
httpReq: {
@@ -14,117 +34,74 @@ export const networkCallsData = [
},
},
},
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
+ params,
+ headers,
+ method,
},
httpRes: { status: 200 },
},
{
httpReq: {
- url: 'https://api.criteo.com/2022-10/audiences/3485/contactlist',
+ url: 'https://api.criteo.com/2022-10/audiences/34894/contactlist',
data: {
data: {
type: 'ContactlistAmendment',
attributes: {
operation: 'add',
- identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
+ identifierType: 'email',
internalIdentifiers: false,
+ identifiers: [
+ 'alex@email.com',
+ 'amy@email.com',
+ 'van@email.com',
+ 'alex@email.com',
+ 'amy@email.com',
+ 'van@email.com',
+ ],
},
},
},
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
- },
- httpRes: {
- code: '400',
- data: {
- errors: [
- {
- traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
- type: 'authorization',
- code: 'authorization-token-expired',
- instance: '/2022-10/audiences/123/contactlist',
- title: 'The authorization token has expired',
- },
- ],
- },
- status: 401,
+ params,
+ headers,
+ method,
},
+ httpRes: { status: 200 },
},
{
httpReq: {
- url: 'https://api.criteo.com/2022-10/audiences/34895/contactlist',
+ url: 'https://api.criteo.com/2022-10/audiences/34893/contactlist',
data: {
data: {
type: 'ContactlistAmendment',
attributes: {
- operation: 'add',
+ operation: 'remove',
identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
internalIdentifiers: false,
+ identifiers: [
+ 'sample_madid',
+ 'sample_madid_1',
+ 'sample_madid_2',
+ 'sample_madid_10',
+ 'sample_madid_13',
+ 'sample_madid_11',
+ 'sample_madid_12',
+ ],
},
},
},
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
- },
- httpRes: {
- code: '400',
- data: {
- errors: [
- {
- traceIdentifier: '80a1a0ba3981b04da847d05700752c77',
- type: 'authorization',
- code: 'authorization-token-invalid',
- instance: '/2022-10/audiences/123/contactlist',
- title: 'The authorization header is invalid',
- },
- ],
- },
- status: 401,
+ params,
+ headers,
+ method,
},
+ httpRes: { status: 200 },
},
{
httpReq: {
url: 'https://api.criteo.com/2022-10/audiences/34896/contactlist',
- data: {
- data: {
- type: 'ContactlistAmendment',
- attributes: {
- operation: 'add',
- identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
- internalIdentifiers: false,
- },
- },
- },
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
+ data: commonData,
+ params,
+ headers,
+ method,
},
httpRes: {
code: '400',
@@ -143,25 +120,10 @@ export const networkCallsData = [
{
httpReq: {
url: 'https://api.criteo.com/2022-10/audiences/34897/contactlist',
- data: {
- data: {
- type: 'ContactlistAmendment',
- attributes: {
- operation: 'add',
- identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
- internalIdentifiers: false,
- },
- },
- },
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
+ data: commonData,
+ params,
+ headers,
+ method,
},
httpRes: {
code: '500',
@@ -180,50 +142,20 @@ export const networkCallsData = [
{
httpReq: {
url: 'https://api.criteo.com/2022-10/audiences/34898/contactlist',
- data: {
- data: {
- type: 'ContactlistAmendment',
- attributes: {
- operation: 'add',
- identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
- internalIdentifiers: false,
- },
- },
- },
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
+ data: commonData,
+ params,
+ headers,
+ method,
},
httpRes: { code: '429', data: {}, status: 429 },
},
{
httpReq: {
url: 'https://api.criteo.com/2022-10/audiences/34899/contactlist',
- data: {
- data: {
- type: 'ContactlistAmendment',
- attributes: {
- operation: 'add',
- identifierType: 'madid',
- identifiers: ['sample_madid', 'sample_madid_1', 'sample_madid_2'],
- internalIdentifiers: false,
- },
- },
- },
- params: { destination: 'criteo_audience' },
- headers: {
- Authorization: 'Bearer success_access_token',
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- 'User-Agent': 'RudderLabs',
- },
- method: 'PATCH',
+ data: commonData,
+ params,
+ headers,
+ method,
},
httpRes: { code: '400', data: { message: 'unknown error' }, status: 410 },
},
diff --git a/test/integrations/destinations/criteo_audience/router/data.ts b/test/integrations/destinations/criteo_audience/router/data.ts
index a91c1126633..755d83547e1 100644
--- a/test/integrations/destinations/criteo_audience/router/data.ts
+++ b/test/integrations/destinations/criteo_audience/router/data.ts
@@ -1,7 +1,7 @@
export const data = [
{
name: 'criteo_audience',
- description: 'Test 0',
+ description: 'Event Stream test cases',
feature: 'router',
module: 'destination',
version: 'v0',
@@ -19,12 +19,7 @@ export const data = [
},
ID: 'iwehr83843',
},
- metadata: {
- secret: {
- accessToken: 'success_access_token',
- },
- jobId: 1,
- },
+ metadata: { secret: { accessToken: 'success_access_token' }, jobId: 1, userId: 'u1' },
message: {
userId: 'user 1',
type: 'audiencelist',
@@ -52,12 +47,7 @@ export const data = [
],
},
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
},
@@ -71,12 +61,7 @@ export const data = [
},
ID: 'iwehr83843',
},
- metadata: {
- secret: {
- accessToken: 'success_access_token',
- },
- jobId: 2,
- },
+ metadata: { secret: { accessToken: 'success_access_token' }, jobId: 2, userId: 'u1' },
message: {
userId: 'user 1',
type: 'audiencelist',
@@ -112,9 +97,7 @@ export const data = [
],
},
},
- context: {
- ip: '14.5.67.21',
- },
+ context: { ip: '14.5.67.21' },
timestamp: '2020-02-02T00:23:09.544Z',
},
},
@@ -162,12 +145,7 @@ export const data = [
},
],
metadata: [
- {
- jobId: 1,
- secret: {
- accessToken: 'success_access_token',
- },
- },
+ { jobId: 1, secret: { accessToken: 'success_access_token' }, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -243,8 +221,206 @@ export const data = [
},
],
metadata: [
+ { jobId: 2, secret: { accessToken: 'success_access_token' }, userId: 'u1' },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ clientId: 'abcdef8-f49-4cd6-b4c5-958b3d66d431',
+ clientSecret: 'sjhdkhfrz6yc9LrRRIPimE9h53jADLccXTykHCcA6eEoFR4rXQg',
+ audienceId: '34893',
+ audienceType: 'madid',
+ },
+ ID: 'iwehr83843',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'criteo_audience',
+ description: 'Retl test cases',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ clientId: 'abcdef8-f49-4cd6-b4c5-958b3d66d431',
+ clientSecret: 'sjhdkhfrz6yc9LrRRIPimE9h53jADLccXTykHCcA6eEoFR4rXQg',
+ audienceId: '34893',
+ audienceType: 'email',
+ },
+ ID: 'iwehr83843',
+ },
+ metadata: {
+ secret: {
+ accessToken: 'success_access_token',
+ },
+ jobId: 1,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ madid: 'sample_madid',
+ email: 'alex@email.com',
+ identityLink: 'text.com',
+ gum: 'sdjfds',
+ },
+ {
+ madid: 'sample_madid_1',
+ email: 'amy@email.com',
+ identityLink: 'yahoo.com',
+ gum: 'sdjfds',
+ },
+ {
+ madid: 'sample_madid_2',
+ email: 'van@email.com',
+ identityLink: 'abc.com',
+ gum: 'sdjfds',
+ },
+ ],
+ },
+ },
+ context: {
+ externalId: [
+ {
+ type: 'CRITEO_AUDIENCE-23848494844100489',
+ identifierType: 'EMAIL',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_run_id: 'cgiiurt8um7k7n5dq480',
+ task_run_id: 'cgiiurt8um7k7n5dq48g',
+ job_id: '2MUWghI7u85n91dd1qzGyswpZan',
+ version: '895/merge',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ clientId: 'abcdef8-f49-4cd6-b4c5-958b3d66d431',
+ clientSecret: 'sjhdkhfrz6yc9LrRRIPimE9h53jADLccXTykHCcA6eEoFR4rXQg',
+ audienceType: 'email',
+ 'warehouse-adAccountId': '123',
+ },
+ ID: 'iwehr83843',
+ },
+ metadata: {
+ secret: {
+ accessToken: 'success_access_token',
+ },
+ jobId: 2,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ madid: 'sample_madid',
+ email: 'alex@email.com',
+ identityLink: 'text.com',
+ gum: 'sdjfds',
+ },
+ {
+ madid: 'sample_madid_1',
+ email: 'amy@email.com',
+ identityLink: 'yahoo.com',
+ gum: 'sdjfds',
+ },
+ {
+ madid: 'sample_madid_2',
+ email: 'van@email.com',
+ identityLink: 'abc.com',
+ gum: 'sdjfds',
+ },
+ ],
+ },
+ },
+ context: {
+ externalId: [
+ {
+ type: 'CRITEO_AUDIENCE-23848494844100489',
+ identifierType: 'EMAIL',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_run_id: 'cgiiurt8um7k7n5dq480',
+ task_run_id: 'cgiiurt8um7k7n5dq48g',
+ job_id: '2MUWghI7u85n91dd1qzGyswpZan',
+ version: '895/merge',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ destType: 'criteo_audience',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
{
- jobId: 2,
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://api.criteo.com/2022-10/audiences/34893/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'email',
+ identifiers: ['alex@email.com', 'amy@email.com', 'van@email.com'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
secret: {
accessToken: 'success_access_token',
},
@@ -257,7 +433,61 @@ export const data = [
clientId: 'abcdef8-f49-4cd6-b4c5-958b3d66d431',
clientSecret: 'sjhdkhfrz6yc9LrRRIPimE9h53jADLccXTykHCcA6eEoFR4rXQg',
audienceId: '34893',
- audienceType: 'madid',
+ audienceType: 'email',
+ },
+ ID: 'iwehr83843',
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint:
+ 'https://api.criteo.com/2022-10/audiences/23848494844100489/contactlist',
+ headers: {
+ Authorization: 'Bearer success_access_token',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ data: {
+ type: 'ContactlistAmendment',
+ attributes: {
+ operation: 'add',
+ identifierType: 'email',
+ identifiers: ['alex@email.com', 'amy@email.com', 'van@email.com'],
+ internalIdentifiers: false,
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ secret: {
+ accessToken: 'success_access_token',
+ },
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ clientId: 'abcdef8-f49-4cd6-b4c5-958b3d66d431',
+ clientSecret: 'sjhdkhfrz6yc9LrRRIPimE9h53jADLccXTykHCcA6eEoFR4rXQg',
+ 'warehouse-adAccountId': '123',
+ audienceType: 'email',
},
ID: 'iwehr83843',
},
diff --git a/test/integrations/destinations/custify/deleteUsers/data.ts b/test/integrations/destinations/custify/deleteUsers/data.ts
new file mode 100644
index 00000000000..22a120770a1
--- /dev/null
+++ b/test/integrations/destinations/custify/deleteUsers/data.ts
@@ -0,0 +1,158 @@
+const destType = 'custify';
+const commonData = {
+ name: destType,
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+};
+
+export const data = [
+ {
+ description: 'Test 0: should fail when config is not being sent',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ ],
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Config for deletion not present',
+ },
+ ],
+ },
+ },
+ },
+ {
+ description: 'Test 1: should fail when apiKey is not present in config',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder2',
+ },
+ ],
+ config: {
+ apiToken: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error: 'api key for deletion not present',
+ },
+ ],
+ },
+ },
+ },
+
+ {
+ description: 'Test 2: should pass when one of the users is not present in destination',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ {
+ userId: 'rudder2',
+ },
+ ],
+ config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [{ statusCode: 200, status: 'successful' }],
+ },
+ },
+ },
+
+ {
+ description:
+ 'Test 3: should fail when one of the users is returning with 4xx(not 404) from destination',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ {
+ userId: 'rudder3',
+ },
+ ],
+ config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [{ statusCode: 400, error: '{"error":"User: rudder3 has a problem"}' }],
+ },
+ },
+ },
+
+ {
+ description: 'Test 4: should fail when one of the userAttributes does not contain `userId`',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ {},
+ ],
+ config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [{ statusCode: 400, error: 'User id for deletion not present' }],
+ },
+ },
+ },
+].map((props) => ({ ...commonData, ...props }));
diff --git a/test/integrations/destinations/custify/network.ts b/test/integrations/destinations/custify/network.ts
new file mode 100644
index 00000000000..242f54c97b2
--- /dev/null
+++ b/test/integrations/destinations/custify/network.ts
@@ -0,0 +1,85 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.custify.com/company',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ company_id: '6',
+ name: 'Pizzeria Presto',
+ signed_up_at: '2019-05-30T12:00:00.000Z',
+ size: 15,
+ website: 'www.pizzeriapresto.com',
+ industry: 'Restaurant',
+ plan: 'Platinum',
+ monthly_revenue: 1234567,
+ churned: false,
+ owners_csm: 'john.doe@mail.com',
+ owners_account: 'john.doe@mail.com',
+ parent_companies: [
+ {
+ id: '5ec50c9829d3c17c7cf455f2',
+ },
+ {
+ id: '5ec50c9829d3c17c7cf457f2',
+ },
+ ],
+ custom_attributes: {
+ restaurants: 5,
+ custom: 'template',
+ },
+ },
+ status: 200,
+ },
+ },
+
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.custify.com/people?user_id=rudder1',
+ headers: {
+ Authorization: 'Bearer dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'All users associated with rudder1 were successfully deleted',
+ code: 'Success',
+ params: null,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.custify.com/people?user_id=rudder2',
+ headers: {
+ Authorization: 'Bearer dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ error: 'User: rudder2 not found',
+ },
+ status: 404,
+ },
+ },
+
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.custify.com/people?user_id=rudder3',
+ headers: {
+ Authorization: 'Bearer dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ error: 'User: rudder3 has a problem',
+ },
+ status: 400,
+ },
+ },
+];
diff --git a/test/integrations/destinations/custify/processor/data.ts b/test/integrations/destinations/custify/processor/data.ts
new file mode 100644
index 00000000000..b5bd8bd753f
--- /dev/null
+++ b/test/integrations/destinations/custify/processor/data.ts
@@ -0,0 +1,672 @@
+export const data = [
+ {
+ name: 'custify',
+ description: 'Identify Call with all traits and adding to company',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'identify',
+ userId: 'user_1234',
+ context: {
+ traits: {
+ email: 'user111@gmail.com',
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: {
+ id: 'company_123',
+ },
+ },
+ },
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_1234',
+ email: 'user111@gmail.com',
+ phone: 9830311522,
+ session_count: 23,
+ unsubscribed_from_emails: false,
+ unsubscribed_from_calls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_attributes: {
+ firstName: 'New',
+ lastName: 'User',
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ name: 'New User',
+ companies: [
+ {
+ company_id: 'company_123',
+ remove: false,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_1234',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Identify Call removing the user from company',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'identify',
+ userId: 'user_1234',
+ context: {
+ traits: {
+ email: 'user111@gmail.com',
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: {
+ id: 'company_123',
+ remove: true,
+ },
+ },
+ },
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_1234',
+ email: 'user111@gmail.com',
+ phone: 9830311522,
+ session_count: 23,
+ unsubscribed_from_emails: false,
+ unsubscribed_from_calls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_attributes: {
+ firstName: 'New',
+ lastName: 'User',
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ name: 'New User',
+ companies: [
+ {
+ company_id: 'company_123',
+ remove: true,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_1234',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Identify Call without userId and email and anoymousId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: {
+ id: 'company_123',
+ remove: true,
+ },
+ },
+ },
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Email or userId is mandatory',
+ statTags: {
+ destType: 'CUSTIFY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Identify Call without userId and email and sendAnonymous is false',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: {
+ id: 'company_123',
+ remove: true,
+ },
+ },
+ },
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Email or userId is mandatory',
+ statTags: {
+ destType: 'CUSTIFY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Identify Call without userId and email and sendAnonymous is true',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: true,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: {
+ id: 'company_123',
+ remove: true,
+ },
+ },
+ },
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ phone: 9830311522,
+ session_count: 23,
+ unsubscribed_from_emails: false,
+ unsubscribed_from_calls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_attributes: {
+ firstName: 'New',
+ lastName: 'User',
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ user_id: 'bf412108-0357-4330-b119-7305e767823c',
+ name: 'New User',
+ companies: [
+ {
+ company_id: 'company_123',
+ remove: true,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Track call with all properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'track',
+ event: 'Order Completed Version 2',
+ sentAt: '2021-08-26T14:16:47.321Z',
+ userId: 'user_111',
+ context: {
+ library: {
+ name: 'analytics-node',
+ version: '1.0.3',
+ },
+ traits: {
+ email: 'user111@gmail.com',
+ },
+ page: {
+ url: 'https://www.website.com/product/path',
+ },
+ },
+ rudderId: '70612f39-0607-45bb-8236-bf0995fde4fa',
+ _metadata: {
+ nodeVersion: '10.24.1',
+ },
+ messageId:
+ 'node-84952e4eb9c6debbda735c49d08a8b31-fcbfed6a-38cf-42c5-881c-f590f59311b1',
+ properties: {
+ product: 'Cube',
+ revenue: 9002,
+ organization_id: 'company_123',
+ },
+ originalTimestamp: '2021-08-26T14:16:47.317Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_111',
+ email: 'user111@gmail.com',
+ name: 'Order Completed Version 2',
+ created_at: '2021-08-26T14:16:47.317Z',
+ company_id: 'company_123',
+ metadata: {
+ product: 'Cube',
+ revenue: 9002,
+ organization_id: 'company_123',
+ user_id: 'user_111',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_111',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'custify',
+ description: 'Group call with all fields success scenario',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apiKey_key_test_001',
+ sendAnonymousId: false,
+ },
+ ID: 'custify-1234',
+ },
+ message: {
+ type: 'group',
+ userId: 'user_111',
+ groupId: 'company_222',
+ traits: {
+ name: 'Absolute Company',
+ industry: ' Absolute',
+ employees: 121,
+ size: 100,
+ website: 'www.rudder.com',
+ plan: 'GOLD',
+ monthly_revenue: 8000,
+ churned: false,
+ test_att1: 'test_att_val1',
+ },
+ context: {
+ traits: {
+ firstName: 'Absolute',
+ lastName: 'User',
+ phone: 9830311522,
+ session_count: 23,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: {
+ test: 'test',
+ },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_111',
+ phone: 9830311522,
+ signed_up_at: '2020-01-21T00:21:34.208Z',
+ custom_attributes: {
+ firstName: 'Absolute',
+ lastName: 'User',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ name: 'Absolute User',
+ companies: [
+ {
+ company_id: 'company_222',
+ remove: false,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_111',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/custify/router/data.ts b/test/integrations/destinations/custify/router/data.ts
new file mode 100644
index 00000000000..a88f36fc698
--- /dev/null
+++ b/test/integrations/destinations/custify/router/data.ts
@@ -0,0 +1,201 @@
+export const data = [
+ {
+ name: 'custify',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ description: 'Group callw with all parameters',
+ destination: {
+ Config: { apiKey: 'apiKey_key_test_001', sendAnonymousId: false },
+ ID: 'custify-1234',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ type: 'group',
+ userId: 'user_111',
+ groupId: 'company_222',
+ traits: {
+ name: 'Absolute Company',
+ industry: ' Absolute',
+ employees: 121,
+ size: 100,
+ website: 'www.rudder.com',
+ plan: 'GOLD',
+ monthly_revenue: 8000,
+ churned: false,
+ test_att1: 'test_att_val1',
+ },
+ context: {
+ traits: {
+ firstName: 'Absolute',
+ lastName: 'User',
+ phone: 9830311522,
+ session_count: 23,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: { test: 'test' },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ ip: '14.5.67.21',
+ library: { name: 'http' },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ {
+ description: 'Identify with all parameters',
+ destination: {
+ Config: { apiKeyToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'custify-1234',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ type: 'identify',
+ userId: 'user_1234',
+ context: {
+ traits: {
+ email: 'user111@gmail.com',
+ firstName: 'New',
+ lastName: 'User',
+ phone: 9830311522,
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ custom_prop4: { test: 'test' },
+ custom_prop5: [1, 3, 4],
+ createdAt: '2022-04-27T13:56:13.012Z',
+ company: { id: 'company_123' },
+ },
+ },
+ timestamp: '2022-04-27T13:56:13.012Z',
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ },
+ ],
+ destType: 'custify',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apiKey_key_test_001',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_111',
+ phone: 9830311522,
+ signed_up_at: '2020-01-21T00:21:34.208Z',
+ custom_attributes: {
+ firstName: 'Absolute',
+ lastName: 'User',
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ name: 'Absolute User',
+ companies: [{ company_id: 'company_222', remove: false }],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_111',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'apiKey_key_test_001', sendAnonymousId: false },
+ ID: 'custify-1234',
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.custify.com/people',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer undefined',
+ Accept: 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'user_1234',
+ email: 'user111@gmail.com',
+ phone: 9830311522,
+ session_count: 23,
+ unsubscribed_from_emails: false,
+ unsubscribed_from_calls: false,
+ signed_up_at: '2022-04-27T13:56:13.012Z',
+ custom_attributes: {
+ firstName: 'New',
+ lastName: 'User',
+ sessionCount: 23,
+ unsubscribedFromEmails: false,
+ unsubscribedFromCalls: false,
+ custom_prop1: 'custom_value1',
+ custom_prop2: 123,
+ custom_prop3: false,
+ createdAt: '2022-04-27T13:56:13.012Z',
+ },
+ name: 'New User',
+ companies: [{ company_id: 'company_123', remove: false }],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user_1234',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKeyToken: 'pk_123', listId: 'correctListId123' },
+ ID: 'custify-1234',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/customerio/router/data.ts b/test/integrations/destinations/customerio/router/data.ts
index 9a343777148..12751477109 100644
--- a/test/integrations/destinations/customerio/router/data.ts
+++ b/test/integrations/destinations/customerio/router/data.ts
@@ -32,34 +32,21 @@ export const data = [
ip: '0.0.0.0',
age: 26,
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- },
- user_properties: {
- prop1: 'val1',
- prop2: 'val2',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
+ user_properties: { prop1: 'val1', prop2: 'val2' },
type: 'identify',
messageId: '84e26acc-56a5-4835-8233-591137fca468',
originalTimestamp: '2019-10-14T09:03:17.562Z',
anonymousId: '123456',
userId: '123456',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
traits: {
anonymousId: 'anon-id',
email: 'test@gmail.com',
@@ -74,9 +61,7 @@ export const data = [
},
sentAt: '2019-10-14T09:03:22.563Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
datacenterEU: false,
@@ -95,25 +80,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'test@rudderstack.com',
- anonymousId: '12345',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'test@rudderstack.com', anonymousId: '12345' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
type: 'page',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -127,15 +101,11 @@ export const data = [
title: 'Test Page',
url: 'www.rudderlabs.com',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
datacenterEU: false,
@@ -155,25 +125,15 @@ export const data = [
version: '1.1.0-beta.2',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.0-beta.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.0-beta.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
groupId: 'group@1',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
traits: {
domainNames: 'rudderstack.com',
email: 'help@rudderstack.com',
@@ -183,9 +143,7 @@ export const data = [
type: 'group',
userId: 'user@1',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
datacenterEU: false,
@@ -205,25 +163,15 @@ export const data = [
version: '1.1.0-beta.2',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.0-beta.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.0-beta.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
groupId: 'group@1',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
traits: {
domainNames: 'rudderstack.com',
email: 'help@rudderstack.com',
@@ -233,9 +181,7 @@ export const data = [
type: 'group',
userId: 'user@1',
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
destination: {
Config: {
datacenterEU: false,
@@ -261,9 +207,7 @@ export const data = [
type: 'REST',
method: 'PUT',
endpoint: 'https://track.customer.io/api/v1/customers/123456',
- headers: {
- Authorization: 'Basic NDZiZTU0NzY4ZTdkNDlhYjI2Mjg6ZHVtbXlBcGlLZXk=',
- },
+ headers: { Authorization: 'Basic NDZiZTU0NzY4ZTdkNDlhYjI2Mjg6ZHVtbXlBcGlLZXk=' },
params: {},
body: {
JSON: {
@@ -287,11 +231,7 @@ export const data = [
userId: '123456',
statusCode: 200,
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -308,9 +248,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://track.customer.io/api/v1/customers/12345/events',
- headers: {
- Authorization: 'Basic NDZiZTU0NzY4ZTdkNDlhYjI2Mjg6ZHVtbXlBcGlLZXk=',
- },
+ headers: { Authorization: 'Basic NDZiZTU0NzY4ZTdkNDlhYjI2Mjg6ZHVtbXlBcGlLZXk=' },
params: {},
body: {
JSON: {
@@ -333,11 +271,7 @@ export const data = [
userId: '12345',
statusCode: 200,
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -372,17 +306,8 @@ export const data = [
email: 'help@rudderstack.com',
domainNames: 'rudderstack.com',
},
- identifiers: {
- object_id: 'group@1',
- object_type_id: '1',
- },
- cio_relationships: [
- {
- identifiers: {
- id: 'user@1',
- },
- },
- ],
+ identifiers: { object_id: 'group@1', object_type_id: '1' },
+ cio_relationships: [{ identifiers: { id: 'user@1' } }],
},
{
type: 'object',
@@ -392,17 +317,8 @@ export const data = [
email: 'help@rudderstack.com',
domainNames: 'rudderstack.com',
},
- identifiers: {
- object_id: 'group@1',
- object_type_id: '1',
- },
- cio_relationships: [
- {
- identifiers: {
- id: 'user@1',
- },
- },
- ],
+ identifiers: { object_id: 'group@1', object_type_id: '1' },
+ cio_relationships: [{ identifiers: { id: 'user@1' } }],
},
],
},
@@ -411,12 +327,8 @@ export const data = [
files: {},
},
metadata: [
- {
- jobId: 3,
- },
- {
- jobId: 4,
- },
+ { jobId: 3, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
],
batched: false,
statusCode: 200,
diff --git a/test/integrations/destinations/delighted/network.ts b/test/integrations/destinations/delighted/network.ts
new file mode 100644
index 00000000000..d9896a25e81
--- /dev/null
+++ b/test/integrations/destinations/delighted/network.ts
@@ -0,0 +1,30 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.delighted.com/v1/people.json',
+ method: 'GET',
+ headers: { Authorization: `Basic ZHVtbXlBcGlLZXk=` },
+ params: {
+ email: 'identified_user@email.com',
+ },
+ },
+ httpRes: {
+ data: ['user data'],
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.delighted.com/v1/people.json',
+ method: 'GET',
+ headers: { Authorization: `Basic ZHVtbXlBcGlLZXlmb3JmYWlsdXJl` },
+ params: {
+ email: 'unidentified_user@email.com',
+ },
+ },
+ httpRes: {
+ data: [],
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/delighted/processor/data.ts b/test/integrations/destinations/delighted/processor/data.ts
new file mode 100644
index 00000000000..7a5ad7de9d4
--- /dev/null
+++ b/test/integrations/destinations/delighted/processor/data.ts
@@ -0,0 +1,947 @@
+export const data = [
+ {
+ name: 'delighted',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ userId: 'abc@123.com',
+ traits: {
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '+91237416221',
+ last_sent_at: '1626698350',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ email: 'abc@123.com',
+ send: false,
+ channel: 'email',
+ delay: 0,
+ name: 'James Doe',
+ phone_number: '+91237416221',
+ last_sent_at: '1626698350',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'alias',
+ previousId: '123@abc.com',
+ userId: 'abc@123.com',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ email: '123@abc.com',
+ email_update: 'abc@123.com',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: 'Product Reviewed',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ userId: 'identified_user@email.com',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ send: true,
+ channel: 'email',
+ delay: 0,
+ email: 'identified_user@email.com',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKeyforfailure',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: 'Product Reviewed',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ userId: 'unidentified_user@email.com',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "user unidentified_user@email.com doesn't exist",
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ userId: 'identified_user@email.com',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event is not configured on your Rudderstack Dashboard',
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: 'Product Reviewed',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ anonymousId: 'identified_user@email.com',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'userId is required.',
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'alias',
+ previousId: '123@abc.com',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'userId is required.',
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ externalId: [
+ {
+ id: 'sms',
+ type: 'delightedChannelType',
+ },
+ ],
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'alias',
+ userId: 'abc@123.com',
+ previousId: '123@abc.com',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'User Id and Previous Id should be of same type i.e. phone/sms',
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ externalId: [
+ {
+ id: 'sms',
+ type: 'delightedChannelType',
+ },
+ ],
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ userId: 'abc@123.com',
+ traits: {
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '+91237416221',
+ last_sent_at: '1626698350',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Channel is set to sms. Enter correct phone number i.e. E.164',
+ statTags: {
+ destType: 'DELIGHTED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'delighted',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [
+ {
+ event: '',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ externalId: [
+ {
+ id: 'sms',
+ type: 'delightedChannelType',
+ },
+ ],
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ userId: '+911234567890',
+ traits: {
+ firstName: 'James',
+ lastName: 'Doe',
+ last_sent_at: '1626698350',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ send: false,
+ channel: 'sms',
+ delay: 0,
+ name: 'James Doe',
+ phone_number: '+911234567890',
+ last_sent_at: '1626698350',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/delighted/router/data.ts b/test/integrations/destinations/delighted/router/data.ts
new file mode 100644
index 00000000000..b9e98823831
--- /dev/null
+++ b/test/integrations/destinations/delighted/router/data.ts
@@ -0,0 +1,177 @@
+export const data = [
+ {
+ name: 'delighted',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [{ event: '' }],
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ userId: 'abc@123.com',
+ traits: {
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '+92374162212',
+ last_sent_at: '1626698350',
+ },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [{ event: '' }],
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'alias',
+ previousId: '123@abc.com',
+ userId: 'abc@123.com',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ destType: 'delighted',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ email: 'abc@123.com',
+ send: false,
+ channel: 'email',
+ delay: 0,
+ last_sent_at: '1626698350',
+ name: 'James Doe',
+ phone_number: '+92374162212',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [{ event: '' }],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: { email: '123@abc.com', email_update: 'abc@123.com' },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.delighted.com/v1/people.json',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ channel: 'email',
+ delay: 0,
+ eventNamesSettings: [{ event: '' }],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/discord/router/data.ts b/test/integrations/destinations/discord/router/data.ts
index 55861635b0f..5518df8dcf3 100644
--- a/test/integrations/destinations/discord/router/data.ts
+++ b/test/integrations/destinations/discord/router/data.ts
@@ -17,10 +17,7 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [],
@@ -43,15 +40,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.1-rc.1',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.1-rc.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.1-rc.1' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/tests/html/script-test.html',
referrer: 'http://localhost:1111/tests/html/',
@@ -59,9 +50,7 @@ export const data = [
title: '',
url: 'http://localhost:1111/tests/html/script-test.html',
},
- screen: {
- density: 1.7999999523162842,
- },
+ screen: { density: 1.7999999523162842 },
traits: {
country: 'India',
email: 'name@domain.com',
@@ -71,9 +60,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
originalTimestamp: '2020-03-23T03:46:30.916Z',
properties: {
@@ -90,9 +77,7 @@ export const data = [
type: 'page',
userId: '12345',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
destination: {
@@ -102,25 +87,16 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [],
eventTemplateSettings: [],
webhookUrl: 'https://abcd.com/efgh/89078/979868/98678',
whitelistedTraitsSettings: [
- {
- trait: 'country',
- },
- {
- trait: 'email',
- },
- {
- trait: 'name',
- },
+ { trait: 'country' },
+ { trait: 'email' },
+ { trait: 'name' },
],
},
Enabled: true,
@@ -131,9 +107,7 @@ export const data = [
anonymousId: '12345',
channel: 'web',
context: {
- screen: {
- density: 1.7999999523162842,
- },
+ screen: { density: 1.7999999523162842 },
traits: {
country: 'India',
email: 'name@domain.com',
@@ -149,9 +123,7 @@ export const data = [
hiji: 'hulala-1',
name: 'my-name-1',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
originalTimestamp: '2020-03-23T03:41:46.122Z',
receivedAt: '2020-03-23T09:11:46.244+05:30',
@@ -168,6 +140,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
{
@@ -178,10 +151,7 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventTemplateSettings: [
@@ -199,14 +169,7 @@ export const data = [
],
IdentifyTemplate: 'identified {{name}} with {{traits}}',
webhookUrl: 'https://abcd.com/efgh/89078/979868/98678',
- whitelistedTraitsSettings: [
- {
- trait: 'hiji',
- },
- {
- trait: '',
- },
- ],
+ whitelistedTraitsSettings: [{ trait: 'hiji' }, { trait: '' }],
},
Enabled: true,
Transformations: [],
@@ -226,9 +189,7 @@ export const data = [
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
event: 'test_eventing_testis',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
originalTimestamp: '2020-03-23T03:46:30.922Z',
properties: {
@@ -252,6 +213,7 @@ export const data = [
jobId: 129,
messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
],
@@ -273,10 +235,7 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [],
@@ -289,11 +248,7 @@ export const data = [
Transformations: [],
IsProcessorEnabled: true,
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statTags: {
destType: 'DISCORD',
feature: 'router',
@@ -312,9 +267,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://abcd.com/efgh/89078/979868/98678',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -334,25 +287,16 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [],
eventTemplateSettings: [],
webhookUrl: 'https://abcd.com/efgh/89078/979868/98678',
whitelistedTraitsSettings: [
- {
- trait: 'country',
- },
- {
- trait: 'email',
- },
- {
- trait: 'name',
- },
+ { trait: 'country' },
+ { trait: 'email' },
+ { trait: 'name' },
],
},
Enabled: true,
@@ -367,6 +311,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
batched: false,
@@ -378,9 +323,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://abcd.com/efgh/89078/979868/98678',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -399,10 +342,7 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'DISCORD',
DisplayName: 'Discord',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventTemplateSettings: [
@@ -420,14 +360,7 @@ export const data = [
],
IdentifyTemplate: 'identified {{name}} with {{traits}}',
webhookUrl: 'https://abcd.com/efgh/89078/979868/98678',
- whitelistedTraitsSettings: [
- {
- trait: 'hiji',
- },
- {
- trait: '',
- },
- ],
+ whitelistedTraitsSettings: [{ trait: 'hiji' }, { trait: '' }],
},
Enabled: true,
Transformations: [],
@@ -441,6 +374,7 @@ export const data = [
jobId: 129,
messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/drip/network.ts b/test/integrations/destinations/drip/network.ts
new file mode 100644
index 00000000000..cfce027426a
--- /dev/null
+++ b/test/integrations/destinations/drip/network.ts
@@ -0,0 +1,30 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.getdrip.com/v2/1809802/subscribers/identified_user@gmail.com',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.getdrip.com/v2/1809802/subscribers/unidentified_user@gmail.com',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 400,
+ },
+ },
+ ,
+ {
+ httpReq: {
+ url: 'https://api.getdrip.com/v2/1809802/subscribers',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/drip/processor/data.ts b/test/integrations/destinations/drip/processor/data.ts
new file mode 100644
index 00000000000..1874f932fa1
--- /dev/null
+++ b/test/integrations/destinations/drip/processor/data.ts
@@ -0,0 +1,1498 @@
+export const data = [
+ {
+ name: 'drip',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ email: 'test1@gmail.com',
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '237416221',
+ customFields: {
+ filter1: 'filterval1',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/subscribers',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ subscribers: [
+ {
+ email: 'test1@gmail.com',
+ first_name: 'James',
+ last_name: 'Doe',
+ phone: '237416221',
+ ip_address: '0.0.0.0',
+ custom_fields: {
+ filter1: 'filterval1',
+ },
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ email: '12324adfgs',
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '237416221',
+ customFields: {
+ filter1: 'filterval1',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'dripId or email is required for the call',
+ statTags: {
+ destType: 'DRIP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ email: 'test1@gmail.com',
+ name: 'James Doe',
+ phone: '237416221',
+ filter1: 'filterval1',
+ filter2: 'filterval2',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/subscribers',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ subscribers: [
+ {
+ email: 'test1@gmail.com',
+ first_name: 'James',
+ last_name: 'Doe',
+ phone: '237416221',
+ ip_address: '0.0.0.0',
+ custom_fields: {
+ filter1: 'filterval1',
+ filter2: 'filterval2',
+ },
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ email: 'test1@gmail.com',
+ name: 'James Doe',
+ phone: '237416221',
+ filter1: 'filterval1',
+ filter2: 'filterval2',
+ tags: ['tag1', 'tag2'],
+ startingEmailIndex: 1,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/campaigns/915194776/subscribers',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ subscribers: [
+ {
+ email: 'test1@gmail.com',
+ starting_email_index: 1,
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ email: 'user1@gmail.com',
+ customFields: {
+ field1: 'val1',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/events',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ email: 'user1@gmail.com',
+ properties: {
+ field1: 'val1',
+ },
+ action: 'testing',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: '',
+ properties: {
+ email: 'user1@gmail.com',
+ custom_fields: {
+ field1: 'val1',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event name is required',
+ statTags: {
+ destType: 'DRIP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ email: 'identified_user@gmail.com',
+ customFields: {
+ field1: 'val1',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/events',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ email: 'identified_user@gmail.com',
+ properties: {
+ field1: 'val1',
+ },
+ action: 'testing',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ email: 'identified_user@gmail.com',
+ field1: 'val1',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/events',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ email: 'identified_user@gmail.com',
+ properties: {
+ field1: 'val1',
+ },
+ action: 'testing',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ email: 'unidentified_user@gmail.com',
+ field1: 'val1',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Error occurred while checking user : error response not found',
+ statTags: {
+ destType: 'DRIP',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'checkout started',
+ properties: {
+ email: 'identified_user@gmail.com',
+ field1: 'val1',
+ affiliation: 'my_custom_order',
+ order_id: '456445746',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v3/1809802/shopper_activity/order',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ action: 'placed',
+ email: 'identified_user@gmail.com',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ order_id: '456445746',
+ provider: 'my_custom_order',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'checkout started',
+ properties: {
+ email: 'identified_user@gmail.com',
+ field1: 'val1',
+ affiliation: 'my_custom_order',
+ order_id: '456445746',
+ products: [
+ {
+ name: 'shirt',
+ price: 11.16,
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v3/1809802/shopper_activity/order',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ action: 'placed',
+ email: 'identified_user@gmail.com',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ order_id: '456445746',
+ provider: 'my_custom_order',
+ items: [
+ {
+ name: 'shirt',
+ price: 11.16,
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'checkout',
+ properties: {
+ email: 'identified_user@gmail.com',
+ field1: 'val1',
+ customFields: {
+ field2: 'val2',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/events',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ action: 'checkout',
+ email: 'identified_user@gmail.com',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ properties: {
+ field2: 'val2',
+ },
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'drip',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ message: {
+ type: 'identify',
+ event: 'identify',
+ userId: 'user@1',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '13',
+ },
+ app: {
+ name: 'rudderstack',
+ build: '5425',
+ version: '2.4.1',
+ },
+ device: {
+ id: '8b048b94cbec4fcf',
+ name: 'o1q',
+ type: 'Android',
+ model: 'SM-G991U',
+ manufacturer: 'samsung',
+ },
+ locale: 'en-US',
+ traits: {
+ id: 'ruddertest@gmail.com',
+ email: 'ruddertest@gmail.com',
+ title: 'Social Impact Program Manager',
+ skills: [
+ {
+ id: 134,
+ name: 'Business Development',
+ tagGroupId: 2,
+ parentTagId: 134,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 96,
+ name: 'Communications',
+ tagGroupId: 2,
+ parentTagId: 96,
+ huddleVisible: true,
+ onboardVisible: true,
+ },
+ {
+ id: 489,
+ name: 'Construction',
+ tagGroupId: 2,
+ parentTagId: 489,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 671,
+ name: 'Data Analysis',
+ tagGroupId: 2,
+ parentTagId: 671,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 676,
+ name: 'Engineering: Mechanical',
+ tagGroupId: 2,
+ parentTagId: 676,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 189,
+ name: 'Operations',
+ tagGroupId: 2,
+ parentTagId: 189,
+ huddleVisible: true,
+ onboardVisible: true,
+ },
+ {
+ id: 194,
+ name: 'Product Management',
+ tagGroupId: 2,
+ parentTagId: 194,
+ huddleVisible: true,
+ onboardVisible: true,
+ },
+ {
+ id: 195,
+ name: 'Program Management',
+ tagGroupId: 2,
+ parentTagId: 195,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 199,
+ name: 'R&D',
+ tagGroupId: 2,
+ parentTagId: 199,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 102,
+ name: 'Sales',
+ tagGroupId: 2,
+ parentTagId: 102,
+ huddleVisible: true,
+ onboardVisible: true,
+ },
+ ],
+ userId: 'ruddertest@gmail.com',
+ address: 'Chicago, IL, USA',
+ industry: 'Education',
+ lastName: 'test',
+ lastname: 'test',
+ verified: false,
+ firstName: 'rudder',
+ firstname: 'rudder',
+ interests: [
+ {
+ id: 649,
+ name: 'Adaptation',
+ tagGroupId: 4,
+ parentTagId: 745,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 663,
+ name: 'Carbon removal and sequestration',
+ tagGroupId: 4,
+ parentTagId: 761,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 664,
+ name: 'Clean Energy and Energy Efficiency',
+ tagGroupId: 4,
+ parentTagId: 259,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 654,
+ name: 'Climate Science and Earth Systems',
+ tagGroupId: 4,
+ parentTagId: 744,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 650,
+ name: 'Corporate Sustainability',
+ tagGroupId: 4,
+ parentTagId: 650,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 651,
+ name: 'Finance & Risk',
+ tagGroupId: 4,
+ parentTagId: 651,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 652,
+ name: 'Food and Agriculture',
+ tagGroupId: 4,
+ parentTagId: 652,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ {
+ id: 665,
+ name: 'Transport',
+ tagGroupId: 4,
+ parentTagId: 665,
+ huddleVisible: false,
+ onboardVisible: false,
+ },
+ ],
+ isDeleted: false,
+ anonymousId: '8b048b94cbec4fcf',
+ jobFunction: 'Program manager',
+ reminderType: 1,
+ jobPreferences: {
+ motivationStr:
+ 'I am looking for a job in climate change.,I want to learn about climate change.,I’d like to connect with other climate enthusiasts.',
+ searchUrgency: 'As soon as possible',
+ maxCompensation: 0,
+ minCompensation: 0,
+ },
+ visibilityType: 'public',
+ 'Linkedin-Signin': true,
+ hubbleOnboarded: false,
+ sharePreference: false,
+ notificationType: 0,
+ shortDescription: 'Social Impact Program Manager',
+ jobProfileComplete: false,
+ noOfMonthExperience: 0,
+ onboarding_completed: 'Yes',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.8.1',
+ },
+ timezone: 'America/Chicago',
+ sessionId: 1681096824,
+ userAgent: 'Dalvik/2.1.0 (Linux; U; Android 13; SM-G991U Build/TP1A.220624.014)',
+ },
+ rudderId: 'f701966c-5568-4500-92ba-4e9023c8fe31',
+ messageId: '77b53247-177f-4ca3-a6b4-aa7558fec280',
+ request_ip: '75.209.176.135',
+ anonymousId: '8b048b94cbec4fcf',
+ integrations: {
+ All: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getdrip.com/v2/1809802/subscribers',
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ subscribers: [
+ {
+ email: 'ruddertest@gmail.com',
+ user_id: 'user@1',
+ address1: 'Chicago, IL, USA',
+ last_name: 'test',
+ first_name: 'rudder',
+ custom_fields: {
+ title: 'Social Impact Program Manager',
+ industry: 'Education',
+ verified: false,
+ isDeleted: false,
+ jobFunction: 'Program manager',
+ reminderType: 1,
+ jobPreferences: {
+ motivationStr:
+ 'I am looking for a job in climate change.,I want to learn about climate change.,I’d like to connect with other climate enthusiasts.',
+ searchUrgency: 'As soon as possible',
+ maxCompensation: 0,
+ minCompensation: 0,
+ },
+ visibilityType: 'public',
+ hubbleOnboarded: false,
+ sharePreference: false,
+ notificationType: 0,
+ shortDescription: 'Social Impact Program Manager',
+ jobProfileComplete: false,
+ noOfMonthExperience: 0,
+ onboarding_completed: 'Yes',
+ },
+ },
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/drip/router/data.ts b/test/integrations/destinations/drip/router/data.ts
new file mode 100644
index 00000000000..44aac7dd1ab
--- /dev/null
+++ b/test/integrations/destinations/drip/router/data.ts
@@ -0,0 +1,189 @@
+export const data = [
+ {
+ name: 'drip',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ email: 'test1@gmail.com',
+ firstName: 'James',
+ lastName: 'Doe',
+ phone: '237416221',
+ customFields: { filter1: 'filterval1' },
+ },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: true,
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: { email: 'user1@gmail.com', customFields: { field1: 'val1' } },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ destType: 'drip',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ subscribers: [
+ {
+ email: 'test1@gmail.com',
+ first_name: 'James',
+ last_name: 'Doe',
+ phone: '237416221',
+ ip_address: '0.0.0.0',
+ custom_fields: { filter1: 'filterval1' },
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.getdrip.com/v2/1809802/subscribers',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '',
+ enableUserCreation: true,
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ email: 'user1@gmail.com',
+ properties: { field1: 'val1' },
+ action: 'testing',
+ occurred_at: '2019-10-14T09:03:17.562Z',
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Basic ZHVtbXlBcGlLZXk=',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.getdrip.com/v2/1809802/events',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ accountId: '1809802',
+ campaignId: '915194776',
+ enableUserCreation: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/engage/router/data.ts b/test/integrations/destinations/engage/router/data.ts
index d6a66b5e98e..248deff04dc 100644
--- a/test/integrations/destinations/engage/router/data.ts
+++ b/test/integrations/destinations/engage/router/data.ts
@@ -12,19 +12,8 @@ export const data = [
{
message: {
groupId: '17',
- context: {
- externalId: [
- {
- type: 'engageId',
- id: '246',
- },
- ],
- },
- traits: {
- lastName: 'garwal',
- type: 'Segments',
- operation: 'remove',
- },
+ context: { externalId: [{ type: 'engageId', id: '246' }] },
+ traits: { lastName: 'garwal', type: 'Segments', operation: 'remove' },
type: 'group',
},
destination: {
@@ -32,18 +21,12 @@ export const data = [
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
],
destType: 'engage',
@@ -68,14 +51,7 @@ export const data = [
'Basic NDl1cjQ5MHJqZm8zNGdpMDR5MzhyOWdvOm44OWczODl5cjM4OWZnYmVmMHUycmZm',
},
params: {},
- body: {
- JSON: {
- subscribed: true,
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: { subscribed: true }, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
destination: {
@@ -83,20 +59,12 @@ export const data = [
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
},
@@ -120,14 +88,8 @@ export const data = [
userId: '1',
context: {
externalId: [
- {
- type: 'engageListId',
- id: '100c983ry8934hf3094yfh348gf1',
- },
- {
- type: 'engageListId',
- id: '4r40hfio3rbfln',
- },
+ { type: 'engageListId', id: '100c983ry8934hf3094yfh348gf1' },
+ { type: 'engageListId', id: '4r40hfio3rbfln' },
],
},
originalTimestamp: '2020-09-28T19:53:31.900Z',
@@ -136,14 +98,7 @@ export const data = [
lastName: 'Rudderlabs',
email: 'Test@r.com',
hasPurchased: 'yes',
- address: {
- Home: {
- city: 'iudcb',
- },
- Office: {
- abc: 'jbc',
- },
- },
+ address: { Home: { city: 'iudcb' }, Office: { abc: 'jbc' } },
state: 'Delhi',
title: 'Mr',
},
@@ -155,18 +110,12 @@ export const data = [
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'engage',
@@ -217,20 +166,12 @@ export const data = [
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
},
@@ -253,11 +194,7 @@ export const data = [
message: {
anonymousId: 'user123',
groupId: '17',
- traits: {
- lastName: 'garwal',
- operation: 'remove',
- email: 'abc@xyz.com',
- },
+ traits: { lastName: 'garwal', operation: 'remove', email: 'abc@xyz.com' },
type: 'group',
},
destination: {
@@ -265,18 +202,12 @@ export const data = [
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
],
destType: 'engage',
@@ -290,22 +221,14 @@ export const data = [
body: {
output: [
{
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
destination: {
Config: {
publicKey: '49ur490rjfo34gi04y38r9go',
privateKey: 'n89g389yr389fgbef0u2rff',
listIds: [
- {
- listId: '9834trg3rgy3g08oi9893rgfb',
- },
- {
- listId: 'f39487tyh49go3h093gh2if2f2',
- },
+ { listId: '9834trg3rgy3g08oi9893rgfb' },
+ { listId: 'f39487tyh49go3h093gh2if2f2' },
],
},
},
diff --git a/test/integrations/destinations/facebook_conversions/mocks.ts b/test/integrations/destinations/facebook_conversions/mocks.ts
new file mode 100644
index 00000000000..c155897bc46
--- /dev/null
+++ b/test/integrations/destinations/facebook_conversions/mocks.ts
@@ -0,0 +1,3 @@
+export const defaultMockFns = () => {
+ jest.spyOn(Date, 'now').mockImplementation(() => new Date('2023-11-12T15:46:51.000Z').valueOf());
+};
diff --git a/test/integrations/destinations/facebook_conversions/processor/data.ts b/test/integrations/destinations/facebook_conversions/processor/data.ts
new file mode 100644
index 00000000000..6eb90942a77
--- /dev/null
+++ b/test/integrations/destinations/facebook_conversions/processor/data.ts
@@ -0,0 +1,1537 @@
+import { defaultMockFns } from '../mocks';
+
+export const data = [
+ {
+ name: 'facebook_conversions',
+ description:
+ 'Timestamp validation. Events must be sent within seven days of their occurrence or up to one minute in the future',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'randomevent',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-09-01T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Events must be sent within seven days of their occurrence or up to one minute in the future.',
+ statusCode: 400,
+ statTags: {
+ destType: 'FACEBOOK_CONVERSIONS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event without event property set',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: '',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "'event' is required and should be a string",
+ statTags: {
+ destType: 'FACEBOOK_CONVERSIONS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Simple track event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'spin_result',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"spin_result","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"value":400,"currency":"USD"}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event products searched',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'products searched',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"Search","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"content_type":"product","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event product added',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'product added',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"AddToCart","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"content_type":"product","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event product viewed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'product viewed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"ViewContent","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"content_type":"product","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event product list viewed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'product list viewed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ products: [
+ {
+ product_id: 1234,
+ quantity: 5,
+ price: 55,
+ },
+ ],
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"ViewContent","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"products":[{"product_id":1234,"quantity":5,"price":55}],"content_ids":[1234],"contents":[{"id":1234,"quantity":5,"item_price":55}],"content_type":"product","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event product list viewed without products array',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'product list viewed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ category: 'randomCategory',
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"ViewContent","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"category":"randomCategory","content_ids":["randomCategory"],"contents":[{"id":"randomCategory","quantity":1}],"content_type":"product_group","content_category":"randomCategory","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event product added to wishlist',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'product added to wishlist',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"AddToWishlist","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event payment info entered',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'payment info entered',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"AddPaymentInfo","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description:
+ 'Track event with standard event order completed with delivery_category in products array',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'order completed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ products: [
+ {
+ product_id: 1234,
+ quantity: 5,
+ price: 55,
+ delivery_category: 'home_delivery',
+ },
+ ],
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"Purchase","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"products":[{"product_id":1234,"quantity":5,"price":55,"delivery_category":"home_delivery"}],"content_ids":[1234],"contents":[{"id":1234,"quantity":5,"item_price":55,"delivery_category":"home_delivery"}],"content_type":"product","currency":"USD","value":400,"num_items":1}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description:
+ 'Track event with standard event order completed with delivery_category in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: {
+ carrier: 'Banglalink',
+ },
+ os: {
+ name: 'android',
+ version: '8.1.0',
+ },
+ screen: {
+ height: '100',
+ density: 50,
+ },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'order completed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ revenue: 400,
+ additional_bet_index: 0,
+ delivery_category: 'home_delivery',
+ products: [
+ {
+ product_id: 1234,
+ quantity: 5,
+ price: 55,
+ },
+ ],
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ eventCustomProperties: [
+ {
+ eventCustomProperties: '',
+ },
+ ],
+ removeExternalId: true,
+ whitelistPiiProperties: [
+ {
+ whitelistPiiProperties: '',
+ },
+ ],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"Purchase","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"delivery_category":"home_delivery","products":[{"product_id":1234,"quantity":5,"price":55}],"content_ids":[1234],"contents":[{"id":1234,"quantity":5,"item_price":55,"delivery_category":"home_delivery"}],"content_type":"product","currency":"USD","value":400,"num_items":1}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'facebook_conversions',
+ description: 'Track event with standard event order completed with content_type in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: {
+ zip: 1234,
+ },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'order completed',
+ integrations: {
+ All: true,
+ },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: {
+ content_type: 'product_group',
+ revenue: 400,
+ additional_bet_index: 0,
+ products: [
+ {
+ product_id: 1234,
+ quantity: 5,
+ price: 55,
+ },
+ ],
+ },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: false,
+ },
+ ],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ removeExternalId: true,
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"Purchase","event_time":1699784211,"action_source":"website","custom_data":{"content_type":"product_group","revenue":400,"additional_bet_index":0,"products":[{"product_id":1234,"quantity":5,"price":55}],"content_ids":[1234],"contents":[{"id":1234,"quantity":5,"item_price":55}],"currency":"USD","value":400,"num_items":1}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+];
diff --git a/test/integrations/destinations/facebook_conversions/router/data.ts b/test/integrations/destinations/facebook_conversions/router/data.ts
new file mode 100644
index 00000000000..9c6759df61f
--- /dev/null
+++ b/test/integrations/destinations/facebook_conversions/router/data.ts
@@ -0,0 +1,192 @@
+import { defaultMockFns } from '../mocks';
+export const data = [
+ {
+ name: 'facebook_conversions',
+ description: 'Successfull Remove Group Call ',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
+ screen: { height: '100', density: 50 },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: { zip: 1234 },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'spin_result',
+ integrations: { All: true },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: { revenue: 400, additional_bet_index: 0 },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
+ removeExternalId: true,
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ {
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ channel: 'web',
+ context: {
+ device: {
+ id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ manufacturer: 'Xiaomi',
+ model: 'Redmi 6',
+ name: 'xiaomi',
+ },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
+ screen: { height: '100', density: 50 },
+ traits: {
+ email: ' aBc@gmail.com ',
+ address: { zip: 1234 },
+ anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ },
+ },
+ event: 'products searched',
+ integrations: { All: true },
+ message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
+ properties: { revenue: 400, additional_bet_index: 0 },
+ timestamp: '2023-11-12T15:46:51.693229+05:30',
+ type: 'track',
+ },
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
+ removeExternalId: true,
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ destType: 'facebook_conversions',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"spin_result","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"value":400,"currency":"USD"}}',
+ ],
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
+ removeExternalId: true,
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://graph.facebook.com/v18.0/dummyID/events?access_token=09876',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {
+ data: [
+ '{"user_data":{"em":"48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08","zp":"03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4"},"event_name":"Search","event_time":1699784211,"action_source":"website","custom_data":{"revenue":400,"additional_bet_index":0,"content_ids":[],"contents":[],"content_type":"product","currency":"USD","value":400}}',
+ ],
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ limitedDataUsage: true,
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
+ accessToken: '09876',
+ datasetId: 'dummyID',
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
+ removeExternalId: true,
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
+ actionSource: 'website',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+];
diff --git a/test/integrations/destinations/facebook_offline_conversions/router/data.ts b/test/integrations/destinations/facebook_offline_conversions/router/data.ts
index 7bf984a0290..c91113fcae6 100644
--- a/test/integrations/destinations/facebook_offline_conversions/router/data.ts
+++ b/test/integrations/destinations/facebook_offline_conversions/router/data.ts
@@ -19,23 +19,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.2',
},
- traits: {
- abc: '1234',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.2',
- },
+ traits: { abc: '1234' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.2' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/tests/html/ecomm_test.html',
referrer: 'http://0.0.0.0:1112/tests/html/',
@@ -57,90 +47,34 @@ export const data = [
coupon: 'APPARELSALE',
currency: 'GBP',
products: [
- {
- id: 'product-bacon-jam',
- category: 'Merch',
- brand: '',
- },
- {
- id: 'product-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
- {
- id: 'offer-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
+ { id: 'product-bacon-jam', category: 'Merch', brand: '' },
+ { id: 'product-t-shirt', category: 'Merch', brand: 'Levis' },
+ { id: 'offer-t-shirt', category: 'Merch', brand: 'Levis' },
],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Viewed',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Viewed' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
- {
- from: 'AddToWishlist',
- to: '506289934669334',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
+ { from: 'AddToWishlist', to: '506289934669334' },
],
isHashRequired: true,
},
@@ -156,23 +90,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.2',
},
- traits: {
- abc: '1234',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.2',
- },
+ traits: { abc: '1234' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.2' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/tests/html/ecomm_test.html',
referrer: 'http://0.0.0.0:1112/tests/html/',
@@ -194,86 +118,33 @@ export const data = [
coupon: 'APPARELSALE',
currency: 'GBP',
products: [
- {
- id: 'product-bacon-jam',
- category: 'Merch',
- brand: '',
- },
- {
- id: 'product-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
- {
- id: 'offer-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
+ { id: 'product-bacon-jam', category: 'Merch', brand: '' },
+ { id: 'product-t-shirt', category: 'Merch', brand: 'Levis' },
+ { id: 'offer-t-shirt', category: 'Merch', brand: 'Levis' },
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Viewed',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Viewed' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
],
isHashRequired: true,
},
@@ -294,9 +165,7 @@ export const data = [
birthday: '2005-01-01T23:28:56.782Z',
firstName: 'test',
lastName: 'rudderstack',
- initial: {
- firstName: 'rudderlabs',
- },
+ initial: { firstName: 'rudderlabs' },
address: {
city: 'kalkata',
state: 'west bangal',
@@ -306,20 +175,12 @@ export const data = [
phone: '9886775586',
gender: 'male',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.2' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/tests/html/ecomm_test.html',
referrer: 'http://0.0.0.0:1112/tests/html/',
@@ -327,9 +188,7 @@ export const data = [
title: 'Fb Offline Conversion Ecommerce Test',
url: 'http://0.0.0.0:1112/tests/html/ecomm_test.html',
},
- device: {
- advertisingId: 'apple@123',
- },
+ device: { advertisingId: 'apple@123' },
},
type: 'track',
messageId: '9116b734-7e6b-4497-ab51-c16744d4487e',
@@ -345,86 +204,33 @@ export const data = [
coupon: 'APPARELSALE',
currency: 'IND',
products: [
- {
- id: 'product-bacon-jam',
- category: 'Merch',
- brand: '',
- },
- {
- id: 'product-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
- {
- id: 'offer-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
+ { id: 'product-bacon-jam', category: 'Merch', brand: '' },
+ { id: 'product-t-shirt', category: 'Merch', brand: 'Levis' },
+ { id: 'offer-t-shirt', category: 'Merch', brand: 'Levis' },
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Searched',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Searched' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
],
isHashRequired: true,
},
@@ -443,11 +249,7 @@ export const data = [
output: [
{
error: 'Please Map Your Standard Events With Event Set Ids',
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statTags: {
destType: 'FACEBOOK_OFFLINE_CONVERSIONS',
@@ -463,64 +265,22 @@ export const data = [
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Viewed',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Viewed' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
- {
- from: 'AddToWishlist',
- to: '506289934669334',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
+ { from: 'AddToWishlist', to: '506289934669334' },
],
isHashRequired: true,
},
@@ -528,11 +288,7 @@ export const data = [
},
{
error: 'Please Map Your Standard Events With Event Set Ids',
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
destType: 'FACEBOOK_OFFLINE_CONVERSIONS',
errorCategory: 'dataValidation',
@@ -548,79 +304,31 @@ export const data = [
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Viewed',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Viewed' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
],
isHashRequired: true,
},
},
},
{
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batchedRequest: [
{
- body: {
- FORM: {},
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- },
+ body: { FORM: {}, JSON: {}, JSON_ARRAY: {}, XML: {} },
endpoint:
'https://graph.facebook.com/v16.0/1148872185708962/events?upload_tag=test campaign&data=%5B%7B%22match_keys%22%3A%7B%22doby%22%3A%22f388bc7cd953b951ffdf8e06275d94946dc52f03ed96536497fbe534469d38d6%22%2C%22dobm%22%3A%22f388bc7cd953b951ffdf8e06275d94946dc52f03ed96536497fbe534469d38d6%22%2C%22dobd%22%3A%22f388bc7cd953b951ffdf8e06275d94946dc52f03ed96536497fbe534469d38d6%22%2C%22extern_id%22%3A%22user%401%22%2C%22email%22%3A%5B%221c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd%22%5D%2C%22phone%22%3A%5B%2274a39482392f83119041d571d5dace439d315faea8214fe8e815c00261b80615%22%5D%2C%22gen%22%3A%220d248e82c62c9386878327d491c762a002152d42ab2c391a31c44d9f62675ddf%22%2C%22ln%22%3A%227fb35d4777487797615cfa7c57724a47ba99152485600ccdb98e3871a6d05b21%22%2C%22fn%22%3A%229f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08%22%2C%22ct%22%3A%22375aba919c30870659093b7ddcf6045ff7a8624dd4dba49ced8981bd4d0666e0%22%2C%22zip%22%3A%5B%228d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92%22%5D%2C%22madid%22%3A%22c20fa16907343eef642d10f0bdb81bf629e6aaf6c906f26eabda079ca9e5ab67%22%2C%22client_user_agent%22%3A%22Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F83.0.4103.97%20Safari%2F537.36%22%7D%2C%22event_time%22%3A1663761919%2C%22currency%22%3A%22IND%22%2C%22value%22%3A100%2C%22order_id%22%3A%22485893487985894998%22%2C%22contents%22%3A%5B%7B%22id%22%3A%22product-bacon-jam%22%2C%22quantity%22%3A1%2C%22brand%22%3A%22%22%2C%22category%22%3A%22Merch%22%7D%2C%7B%22id%22%3A%22product-t-shirt%22%2C%22quantity%22%3A1%2C%22brand%22%3A%22Levis%22%2C%22category%22%3A%22Merch%22%7D%2C%7B%22id%22%3A%22offer-t-shirt%22%2C%22quantity%22%3A1%2C%22brand%22%3A%22Levis%22%2C%22category%22%3A%22Merch%22%7D%5D%2C%22custom_data%22%3A%7B%22extern_id%22%3A%22user%401%22%2C%22event_name%22%3A%22Cart%20Checkout%22%2C%22event_time%22%3A1663761919%2C%22currency%22%3A%22IND%22%2C%22value%22%3A100%2C%22email%22%3A%221c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd%22%2C%22phone%22%3A%2274a39482392f83119041d571d5dace439d315faea8214fe8e815c00261b80615%22%2C%22gen%22%3A%220d248e82c62c9386878327d491c762a002152d42ab2c391a31c44d9f62675ddf%22%2C%22ln%22%3A%227fb35d4777487797615cfa7c57724a47ba99152485600ccdb98e3871a6d05b21%22%2C%22fn%22%3A%229f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08%22%2C%22ct%22%3A%22375aba919c30870659093b7ddcf6045ff7a8624dd4dba49ced8981bd4d0666e0%22%2C%22zip%22%3A%228d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92%22%2C%22madid%22%3A%22c20fa16907343eef642d10f0bdb81bf629e6aaf6c906f26eabda079ca9e5ab67%22%2C%22contents%22%3A%5B%7B%22id%22%3A%22product-bacon-jam%22%2C%22category%22%3A%22Merch%22%2C%22brand%22%3A%22%22%7D%2C%7B%22id%22%3A%22product-t-shirt%22%2C%22category%22%3A%22Merch%22%2C%22brand%22%3A%22Levis%22%7D%2C%7B%22id%22%3A%22offer-t-shirt%22%2C%22category%22%3A%22Merch%22%2C%22brand%22%3A%22Levis%22%7D%5D%2C%22order_id%22%3A%22485893487985894998%22%2C%22upload_tag%22%3A%22test%20campaign%22%2C%22client_user_agent%22%3A%22Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_15_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F83.0.4103.97%20Safari%2F537.36%22%2C%22event_source_url%22%3A%22http%3A%2F%2F0.0.0.0%3A1112%2Ftests%2Fhtml%2Fecomm_test.html%22%2C%22shipping%22%3A4%2C%22coupon%22%3A%22APPARELSALE%22%7D%2C%22event_source_url%22%3A%22http%3A%2F%2F0.0.0.0%3A1112%2Ftests%2Fhtml%2Fecomm_test.html%22%2C%22event_name%22%3A%22AddToCart%22%2C%22content_type%22%3A%22product%22%7D%5D&access_token=ABC...',
files: {},
@@ -638,60 +346,21 @@ export const data = [
accessToken: 'ABC...',
valueFieldIdentifier: 'properties.price',
eventsToStandard: [
- {
- from: 'Product Searched',
- to: 'Search',
- },
- {
- to: 'ViewContent',
- from: 'Product Searched',
- },
- {
- to: 'AddToCart',
- from: 'Cart Checkout',
- },
- {
- to: 'AddPaymentInfo',
- from: 'Card Details Added',
- },
- {
- to: 'Lead',
- from: 'Order Completed',
- },
- {
- to: 'CompleteRegistration',
- from: 'Signup',
- },
- {
- to: 'AddToWishlist',
- from: 'Button Clicked',
- },
+ { from: 'Product Searched', to: 'Search' },
+ { to: 'ViewContent', from: 'Product Searched' },
+ { to: 'AddToCart', from: 'Cart Checkout' },
+ { to: 'AddPaymentInfo', from: 'Card Details Added' },
+ { to: 'Lead', from: 'Order Completed' },
+ { to: 'CompleteRegistration', from: 'Signup' },
+ { to: 'AddToWishlist', from: 'Button Clicked' },
],
eventsToIds: [
- {
- from: 'Search',
- to: '582603376981640',
- },
- {
- from: 'Search',
- to: '506289934669334',
- },
- {
- from: 'ViewContent',
- to: '1166826033904512',
- },
- {
- from: 'AddToCart',
- to: '1148872185708962',
- },
- {
- from: 'CompleteRegistration',
- to: '597443908839411',
- },
- {
- from: 'Lead',
- to: '1024592094903800',
- },
+ { from: 'Search', to: '582603376981640' },
+ { from: 'Search', to: '506289934669334' },
+ { from: 'ViewContent', to: '1166826033904512' },
+ { from: 'AddToCart', to: '1148872185708962' },
+ { from: 'CompleteRegistration', to: '597443908839411' },
+ { from: 'Lead', to: '1024592094903800' },
],
isHashRequired: true,
},
diff --git a/test/integrations/destinations/facebook_pixel/dataDelivery/business.ts b/test/integrations/destinations/facebook_pixel/dataDelivery/business.ts
new file mode 100644
index 00000000000..9ac709978d6
--- /dev/null
+++ b/test/integrations/destinations/facebook_pixel/dataDelivery/business.ts
@@ -0,0 +1,258 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { VERSION } from '../../../../../src/v0/destinations/facebook_pixel/config';
+
+export const testFormData = {
+ data: [
+ '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
+ ],
+};
+export const statTags = {
+ destType: 'FACEBOOK_PIXEL',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+export const testScenariosForV1API: ProxyV1TestData[] = [
+ {
+ id: 'facebook_pixel_v1_scenario_1',
+ name: 'facebook_pixel',
+ description: 'app event fails due to access token error',
+ successCriteria: 'Should return 400 with invalid access token error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Invalid OAuth 2.0 access token',
+ statTags: {
+ ...statTags,
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
+ },
+ response: [
+ {
+ error: 'Invalid OAuth 2.0 access token',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_scenario_2',
+ name: 'facebook_pixel',
+ description: 'app event sent successfully',
+ successCriteria: 'Should return 200',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=my_access_token`,
+ params: {
+ destination: 'facebook_pixel',
+ },
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: '{"events_received":1,"fbtrace_id":"facebook_trace_id"}',
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_scenario_3',
+ name: 'facebook_pixel',
+ description: 'app event fails due to invalid timestamp',
+ successCriteria: 'Should return 400 with invalid timestamp error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_timestamp_correct_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Event Timestamp Too Old',
+ statTags,
+ response: [
+ {
+ error: 'Event Timestamp Too Old',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_scenario_4',
+ name: 'facebook_pixel',
+ description: 'app event fails due to missing permissions',
+ successCriteria: 'Should return 400 with missing permissions error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_account_id_valid_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message:
+ "Object with ID 'PIXEL_ID' / 'DATASET_ID' / 'AUDIENCE_ID' does not exist, cannot be loaded due to missing permissions, or does not support this operation",
+ statTags,
+ response: [
+ {
+ error:
+ "Object with ID 'PIXEL_ID' / 'DATASET_ID' / 'AUDIENCE_ID' does not exist, cannot be loaded due to missing permissions, or does not support this operation",
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_scenario_5',
+ name: 'facebook_pixel',
+ description: 'app event fails due to invalid parameter',
+ successCriteria: 'Should return 400 with Invalid parameter error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=not_found_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Invalid Parameter',
+ statTags,
+ response: [
+ {
+ error: 'Invalid Parameter',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_scenario_6',
+ name: 'facebook_pixel',
+ description: 'app event fails due to invalid parameter',
+ successCriteria: 'Should return 400 with Invalid parameter error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234570/events?access_token=valid_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Invalid Parameter',
+ statTags,
+ response: [
+ {
+ error: 'Invalid Parameter',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/facebook_pixel/dataDelivery/data.ts b/test/integrations/destinations/facebook_pixel/dataDelivery/data.ts
index eb9ce344e0a..dcc633e1a85 100644
--- a/test/integrations/destinations/facebook_pixel/dataDelivery/data.ts
+++ b/test/integrations/destinations/facebook_pixel/dataDelivery/data.ts
@@ -1,6 +1,15 @@
import { VERSION } from '../../../../../src/v0/destinations/facebook_pixel/config';
+import { testScenariosForV1API, testFormData, statTags as baseStatTags } from './business';
+import { otherScenariosV1 } from './other';
+import { oauthScenariosV1 } from './oauth';
-export const data = [
+const statTags = {
+ ...baseStatTags,
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+};
+
+export const v0TestData = [
{
name: 'facebook_pixel',
description: 'Test 0',
@@ -12,11 +21,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654773112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -43,22 +48,18 @@ export const data = [
message: 'Invalid OAuth 2.0 access token',
destinationResponse: {
error: {
- message: 'The access token could not be decrypted',
- type: 'OAuthException',
code: 190,
fbtrace_id: 'fbpixel_trace_id',
+ message: 'The access token could not be decrypted',
+ type: 'OAuthException',
},
status: 500,
},
statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
+ ...statTags,
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
},
},
},
@@ -76,11 +77,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654773112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -125,11 +122,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -168,16 +161,7 @@ export const data = [
},
status: 400,
},
- statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- },
+ statTags,
},
},
},
@@ -194,11 +178,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -233,14 +213,8 @@ export const data = [
status: 500,
},
statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
+ ...statTags,
errorType: 'throttled',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
},
},
},
@@ -258,11 +232,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -299,16 +269,7 @@ export const data = [
},
status: 400,
},
- statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- },
+ statTags,
},
},
},
@@ -325,11 +286,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"d58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -364,16 +321,7 @@ export const data = [
},
status: 404,
},
- statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- },
+ statTags,
},
},
},
@@ -390,11 +338,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -429,16 +373,7 @@ export const data = [
},
status: 400,
},
- statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- },
+ statTags,
},
},
},
@@ -455,11 +390,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -494,16 +425,7 @@ export const data = [
},
status: 500,
},
- statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
- errorType: 'aborted',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- },
+ statTags,
},
},
},
@@ -520,11 +442,7 @@ export const data = [
body: {
body: {
XML: {},
- FORM: {
- data: [
- '{"user_data":{"external_id":"c58f05b5e3cc4796f3181cf07349d306547c00b20841a175b179c6860e6a34ab","client_ip_address":"32.122.223.26","client_user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1"},"event_name":"Checkout Step Viewed","event_time":1654772112,"event_source_url":"https://www.my.kaiser.com/checkout","event_id":"4f002656-a7b2-4c17-b9bd-8caa5a29190a","custom_data":{"checkout_id":"26SF29B","site":"www.my.kaiser.com","step":1}}',
- ],
- },
+ FORM: testFormData,
JSON: {},
JSON_ARRAY: {},
},
@@ -560,14 +478,8 @@ export const data = [
status: 412,
},
statTags: {
- destType: 'FACEBOOK_PIXEL',
- errorCategory: 'network',
- destinationId: 'Non-determininable',
- workspaceId: 'Non-determininable',
+ ...statTags,
errorType: 'retryable',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
meta: 'unhandledStatusCode',
},
},
@@ -576,3 +488,10 @@ export const data = [
},
},
];
+
+export const data = [
+ ...v0TestData,
+ ...testScenariosForV1API,
+ ...otherScenariosV1,
+ ...oauthScenariosV1,
+];
diff --git a/test/integrations/destinations/facebook_pixel/dataDelivery/oauth.ts b/test/integrations/destinations/facebook_pixel/dataDelivery/oauth.ts
new file mode 100644
index 00000000000..c6d938c627b
--- /dev/null
+++ b/test/integrations/destinations/facebook_pixel/dataDelivery/oauth.ts
@@ -0,0 +1,45 @@
+import { testFormData, statTags } from './business';
+import { generateProxyV1Payload, generateMetadata } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { VERSION } from '../../../../../src/v0/destinations/facebook_pixel/config';
+
+export const oauthScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'facebook_pixel_v1_oauth_scenario_1',
+ name: 'facebook_pixel',
+ description: 'app event fails due to missing permissions',
+ successCriteria: 'Should return 400 with missing permissions error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234571/events?access_token=valid_access_token`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Capability or permissions issue.',
+ statTags,
+ response: [
+ {
+ error: 'Capability or permissions issue.',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/facebook_pixel/dataDelivery/other.ts b/test/integrations/destinations/facebook_pixel/dataDelivery/other.ts
new file mode 100644
index 00000000000..e25cc8e07c4
--- /dev/null
+++ b/test/integrations/destinations/facebook_pixel/dataDelivery/other.ts
@@ -0,0 +1,93 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { VERSION } from '../../../../../src/v0/destinations/facebook_pixel/config';
+import { testFormData, statTags } from './business';
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'facebook_pixel_v1_other_scenario_1',
+ name: 'facebook_pixel',
+ description: 'user update request is throttled due to too many calls',
+ successCriteria: 'Should return 429 with message there have been too many calls',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=throttled_valid_access_token`,
+ params: {
+ destination: 'facebook_pixel',
+ },
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 429,
+ message: 'API User Too Many Calls',
+ statTags: {
+ ...statTags,
+ errorType: 'throttled',
+ },
+ response: [
+ {
+ error: 'API User Too Many Calls',
+ statusCode: 429,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'facebook_pixel_v1_other_scenario_2',
+ name: 'facebook_pixel',
+ description: 'app event fails due to Unhandled random error',
+ successCriteria: 'Should return 500 with Unhandled random error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234572/events?access_token=valid_access_token_unhandled_response`,
+ FORM: testFormData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 500,
+ message: 'Unhandled random error',
+ statTags: {
+ ...statTags,
+ errorType: 'retryable',
+ meta: 'unhandledStatusCode',
+ },
+ response: [
+ {
+ error: 'Unhandled random error',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/facebook_pixel/network.ts b/test/integrations/destinations/facebook_pixel/network.ts
index 05b3a05fd0b..a61fa44eab8 100644
--- a/test/integrations/destinations/facebook_pixel/network.ts
+++ b/test/integrations/destinations/facebook_pixel/network.ts
@@ -1,4 +1,4 @@
-import { data } from './dataDelivery/data';
+import { testFormData } from './dataDelivery/business';
import { getFormData } from '../../../../src/adapters/network';
import { VERSION } from '../../../../src/v0/destinations/facebook_pixel/config';
@@ -6,7 +6,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_access_token`,
- data: getFormData(data[0].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -26,7 +26,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_timestamp_correct_access_token`,
- data: getFormData(data[2].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -51,7 +51,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=throttled_valid_access_token`,
- data: getFormData(data[3].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -71,7 +71,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_account_id_valid_access_token`,
- data: getFormData(data[4].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -93,7 +93,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=not_found_access_token`,
- data: getFormData(data[5].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -114,7 +114,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234570/events?access_token=valid_access_token`,
- data: getFormData(data[6].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -135,7 +135,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234571/events?access_token=valid_access_token`,
- data: getFormData(data[7].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -156,7 +156,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234572/events?access_token=valid_access_token_unhandled_response`,
- data: getFormData(data[8].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -177,7 +177,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=my_access_token`,
- data: getFormData(data[1].input.request.body.body.FORM).toString(),
+ data: getFormData(testFormData).toString(),
params: { destination: 'facebook_pixel' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
diff --git a/test/integrations/destinations/facebook_pixel/processor/data.ts b/test/integrations/destinations/facebook_pixel/processor/data.ts
index 557bc7066c3..f6a5cd1e209 100644
--- a/test/integrations/destinations/facebook_pixel/processor/data.ts
+++ b/test/integrations/destinations/facebook_pixel/processor/data.ts
@@ -6460,4 +6460,111 @@ export const data = [
},
},
},
+ {
+ name: 'facebook_pixel',
+ description:
+ 'Test 51: properties.content_type is given priority over populating it from categoryToContent mapping.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2023-10-14T15:46:51.693229+05:30',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order completed',
+ properties: {
+ content_type: 'product_group',
+ category: ['clothing', 'fishing'],
+ order_id: 'rudderstackorder1',
+ revenue: 12.24,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ blacklistPiiProperties: [
+ {
+ blacklistPiiProperties: '',
+ blacklistPiiHash: true,
+ },
+ ],
+ categoryToContent: [
+ {
+ from: 'clothing',
+ to: 'product',
+ },
+ ],
+ accessToken: '09876',
+ pixelId: 'dummyPixelId',
+ eventsToEvents: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ valueFieldIdentifier: 'properties.price',
+ advancedMapping: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: `https://graph.facebook.com/${VERSION}/dummyPixelId/events?access_token=09876`,
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ data: [
+ '{"user_data":{"external_id":"5994471abb01112afcc18159f6cc74b4f511b99806da59b3caf5a9c173cacfc5"},"event_name":"Purchase","event_time":1697278611,"event_id":"ec5481b6-a926-4d2e-b293-0b3a77c4d3be","action_source":"website","custom_data":{"content_type":"product_group","category[0]":"clothing","category[1]":"fishing","order_id":"rudderstackorder1","revenue":12.24,"currency":"INR","products[0].quantity":1,"products[0].price":24.75,"products[0].name":"my product","products[0].sku":"p-298","products[1].quantity":3,"products[1].price":24.75,"products[1].name":"other product","products[1].sku":"p-299","content_category":"clothing,fishing","content_ids":["p-298","p-299"],"value":12.24,"contents":[{"id":"p-298","quantity":1,"item_price":24.75},{"id":"p-299","quantity":3,"item_price":24.75}],"num_items":2}}',
+ ],
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
].map((d) => ({ ...d, mockFns }));
diff --git a/test/integrations/destinations/facebook_pixel/router/data.ts b/test/integrations/destinations/facebook_pixel/router/data.ts
index ee2f6968b1b..4bd99147689 100644
--- a/test/integrations/destinations/facebook_pixel/router/data.ts
+++ b/test/integrations/destinations/facebook_pixel/router/data.ts
@@ -19,11 +19,7 @@ export const data = [
{
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- destination_props: {
- Fb: {
- app_id: 'RudderFbApp',
- },
- },
+ destination_props: { Fb: { app_id: 'RudderFbApp' } },
context: {
device: {
id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
@@ -31,67 +27,34 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
- screen: {
- height: '100',
- density: 50,
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
+ screen: { height: '100', density: 50 },
traits: {
email: 'abc@gmail.com',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
- properties: {
- revenue: 400,
- additional_bet_index: 0,
- },
+ properties: { revenue: 400, additional_bet_index: 0 },
timestamp: '2023-10-14T15:46:51.693229+05:30',
type: 'track',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
limitedDataUsage: true,
- blacklistPiiProperties: [
- {
- blacklistPiiProperties: '',
- blacklistPiiHash: false,
- },
- ],
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
removeExternalId: true,
accessToken: '09876',
pixelId: 'dummyPixelId',
- eventsToEvents: [
- {
- from: '',
- to: '',
- },
- ],
- eventCustomProperties: [
- {
- eventCustomProperties: '',
- },
- ],
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
valueFieldIdentifier: '',
advancedMapping: false,
- whitelistPiiProperties: [
- {
- whitelistPiiProperties: '',
- },
- ],
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
},
Enabled: true,
},
@@ -114,67 +77,34 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- },
- properties: {
- plan: 'standard plan',
- name: 'rudder test',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
+ properties: { plan: 'standard plan', name: 'rudder test' },
type: 'identify',
messageId: '84e26acc-56a5-4835-8233-591137fca468',
originalTimestamp: '2023-10-14T00:00:00.693229+05:30',
anonymousId: '00000000000000000000000000',
userId: '123456',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
- blacklistPiiProperties: [
- {
- blacklistPiiProperties: '',
- blacklistPiiHash: false,
- },
- ],
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
accessToken: '09876',
pixelId: 'dummyPixelId',
- eventsToEvents: [
- {
- from: '',
- to: '',
- },
- ],
- eventCustomProperties: [
- {
- eventCustomProperties: '',
- },
- ],
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
valueFieldIdentifier: '',
advancedMapping: true,
- whitelistPiiProperties: [
- {
- whitelistPiiProperties: '',
- },
- ],
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
},
Enabled: true,
},
@@ -195,7 +125,7 @@ export const data = [
version: '1',
type: 'REST',
method: 'POST',
- endpoint: `https://graph.facebook.com/${VERSION}/dummyPixelId/events?access_token=09876`,
+ endpoint: 'https://graph.facebook.com/v18.0/dummyPixelId/events?access_token=09876',
headers: {},
params: {},
body: {
@@ -210,43 +140,21 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
limitedDataUsage: true,
- blacklistPiiProperties: [
- {
- blacklistPiiProperties: '',
- blacklistPiiHash: false,
- },
- ],
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
removeExternalId: true,
accessToken: '09876',
pixelId: 'dummyPixelId',
- eventsToEvents: [
- {
- from: '',
- to: '',
- },
- ],
- eventCustomProperties: [
- {
- eventCustomProperties: '',
- },
- ],
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
valueFieldIdentifier: '',
advancedMapping: false,
- whitelistPiiProperties: [
- {
- whitelistPiiProperties: '',
- },
- ],
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
},
Enabled: true,
},
@@ -256,7 +164,7 @@ export const data = [
version: '1',
type: 'REST',
method: 'POST',
- endpoint: `https://graph.facebook.com/${VERSION}/dummyPixelId/events?access_token=09876`,
+ endpoint: 'https://graph.facebook.com/v18.0/dummyPixelId/events?access_token=09876',
headers: {},
params: {},
body: {
@@ -271,41 +179,19 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
- blacklistPiiProperties: [
- {
- blacklistPiiProperties: '',
- blacklistPiiHash: false,
- },
- ],
+ blacklistPiiProperties: [{ blacklistPiiProperties: '', blacklistPiiHash: false }],
accessToken: '09876',
pixelId: 'dummyPixelId',
- eventsToEvents: [
- {
- from: '',
- to: '',
- },
- ],
- eventCustomProperties: [
- {
- eventCustomProperties: '',
- },
- ],
+ eventsToEvents: [{ from: '', to: '' }],
+ eventCustomProperties: [{ eventCustomProperties: '' }],
valueFieldIdentifier: '',
advancedMapping: true,
- whitelistPiiProperties: [
- {
- whitelistPiiProperties: '',
- },
- ],
+ whitelistPiiProperties: [{ whitelistPiiProperties: '' }],
},
Enabled: true,
},
diff --git a/test/integrations/destinations/factorsai/data.ts b/test/integrations/destinations/factorsai/data.ts
index fb0a76bf342..be13c291f42 100644
--- a/test/integrations/destinations/factorsai/data.ts
+++ b/test/integrations/destinations/factorsai/data.ts
@@ -308,6 +308,9 @@ export const data = [
XML: {},
FORM: {},
JSON: {
+ context: {
+ ip: '8.8.8.8',
+ },
type: 'identify',
traits: {
age: 27,
@@ -540,4 +543,271 @@ export const data = [
},
},
},
+ {
+ name: 'factorsai',
+ description: 'IP fetched from request_ip',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ factorsAIApiKey: 'sdgerghsdfhsdhsdh432141dfgdfsg',
+ },
+ },
+ message: {
+ context: {
+ page: {
+ url: 'myurl',
+ path: '/workspace/index.html',
+ title: 'test track',
+ search: '?s=ek8reb577tu65kfc2fv41fbm3j',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
+ },
+ event: 'finalPageTest',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ type: 'track',
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ originalTimestamp: '2022-10-17T15:32:44.202+05:30',
+ request_ip: '104.205.211.60',
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ type: 'track',
+ event: 'finalPageTest',
+ context: {
+ ip: '104.205.211.60',
+ page: {
+ url: 'myurl',
+ path: '/workspace/index.html',
+ title: 'test track',
+ search: '?s=ek8reb577tu65kfc2fv41fbm3j',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
+ },
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ timestamp: '2022-10-17T15:32:44.202+05:30',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ userId: '',
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic c2RnZXJnaHNkZmhzZGhzZGg0MzIxNDFkZmdkZnNnOg==',
+ },
+ version: '1',
+ endpoint: 'https://api.factors.ai/integrations/rudderstack_platform',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'factorsai',
+ description: 'IP fetched from request_ip',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ factorsAIApiKey: 'sdgerghsdfhsdhsdh432141dfgdfsg',
+ },
+ },
+ message: {
+ context: {
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ },
+ event: 'finalPageTest',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ type: 'track',
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ originalTimestamp: '2022-10-17T15:32:44.202+05:30',
+ request_ip: '0.0.0.0',
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ type: 'track',
+ event: 'finalPageTest',
+ context: {
+ ip: '0.0.0.0',
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ },
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ timestamp: '2022-10-17T15:32:44.202+05:30',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ userId: '',
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic c2RnZXJnaHNkZmhzZGhzZGg0MzIxNDFkZmdkZnNnOg==',
+ },
+ version: '1',
+ endpoint: 'https://api.factors.ai/integrations/rudderstack_platform',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'factorsai',
+ description: 'IP fetched from request_ip withput context in payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ factorsAIApiKey: 'sdgerghsdfhsdhsdh432141dfgdfsg',
+ },
+ },
+ message: {
+ event: 'finalPageTest',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ type: 'track',
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ originalTimestamp: '2022-10-17T15:32:44.202+05:30',
+ request_ip: '1.1.1.1',
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ type: 'track',
+ event: 'finalPageTest',
+ context: {
+ ip: '1.1.1.1',
+ },
+ messageId: '3c0abc14-96a2-4aed-9dfc-ee463832cc24',
+ timestamp: '2022-10-17T15:32:44.202+05:30',
+ properties: {
+ title: 'Intro to Test final segemt context page added context last',
+ },
+ userId: 'PageTestAnonymousUser',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ userId: '',
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic c2RnZXJnaHNkZmhzZGhzZGg0MzIxNDFkZmdkZnNnOg==',
+ },
+ version: '1',
+ endpoint: 'https://api.factors.ai/integrations/rudderstack_platform',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/fb/dataDelivery/business.ts b/test/integrations/destinations/fb/dataDelivery/business.ts
new file mode 100644
index 00000000000..156dc265725
--- /dev/null
+++ b/test/integrations/destinations/fb/dataDelivery/business.ts
@@ -0,0 +1,226 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { VERSION } from '../../../../../src/v0/destinations/fb/config';
+
+export const testData1 = {
+ event: 'CUSTOM_APP_EVENTS',
+ advertiser_id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
+ 'ud[em]': '48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08',
+ 'ud[fn]': '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ 'ud[ge]': '62c66a7a5dd70c3146618063c344e531e6d4b59e379808443ce962b3abd63c5a',
+ 'ud[ln]': '3547cb112ac4489af2310c0626cdba6f3097a2ad5a3b42ddd3b59c76c7a079a3',
+ 'ud[ph]': '588211a01b10feacbf7988d97a06e86c18af5259a7f457fd8759b7f7409a7d1f',
+ extinfo:
+ '["a2","","","","8.1.0","Redmi 6","","","Banglalink",640,480,"1.23",0,0,0,"Europe/Berlin"]',
+ app_user_id: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
+ custom_events:
+ '[{"_logTime":1567333011693,"_eventName":"spin_result","_valueToSum":400,"fb_currency":"GBP","additional_bet_index":0,"battle_id":"N/A","bet_amount":9,"bet_level":1,"bet_multiplier":1,"coin_balance":9466052,"current_module_name":"CasinoGameModule","days_in_game":0,"extra_param":"N/A","fb_profile":"0","featureGameType":"N/A","game_fps":30,"game_id":"fireEagleBase","game_name":"FireEagleSlots","gem_balance":0,"graphicsQuality":"HD","idfa":"2bf99787-33d2-4ae2-a76a-c49672f97252","internetReachability":"ReachableViaLocalAreaNetwork","isLowEndDevice":"False","is_auto_spin":"False","is_turbo":"False","isf":"False","ishighroller":"False","jackpot_win_amount":90,"jackpot_win_type":"Silver","level":6,"lifetime_gem_balance":0,"no_of_spin":1,"player_total_battles":0,"player_total_shields":0,"start_date":"2019-08-01","total_payments":0,"tournament_id":"T1561970819","userId":"c82cbdff-e5be-4009-ac78-cdeea09ab4b1","versionSessionCount":2,"win_amount":0,"fb_content_id":["123","345","567"]}]',
+ advertiser_tracking_enabled: '0',
+ application_tracking_enabled: '0',
+};
+
+export const testData2 = {
+ extinfo: '["a2","","","","8.1.0","Redmi 6","","","Banglalink",0,100,"50.00",0,0,0,""]',
+ custom_events:
+ '[{"_logTime":1567333011693,"_eventName":"Viewed Screen","fb_description":"Main.1233"}]',
+ 'ud[em]': '48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08',
+ advertiser_tracking_enabled: '0',
+ application_tracking_enabled: '0',
+ event: 'CUSTOM_APP_EVENTS',
+};
+
+export const statTags = {
+ destType: 'FB',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+export const testScenariosForV1API: ProxyV1TestData[] = [
+ {
+ id: 'fb_v1_scenario_1',
+ name: 'fb',
+ description: 'app event fails due to access token error',
+ successCriteria: 'Should return 400 with invalid access token error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/RudderFbApp/activities?access_token=invalid_access_token`,
+ headers: {
+ 'x-forwarded-for': '1.2.3.4',
+ },
+ params: {
+ destination: 'fb',
+ },
+ FORM: testData1,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Invalid OAuth 2.0 access token',
+ statTags: {
+ ...statTags,
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
+ },
+ response: [
+ {
+ error: 'Invalid OAuth 2.0 access token',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fb_v1_scenario_2',
+ name: 'fb',
+ description: 'app event sent successfully',
+ successCriteria: 'Should return 200',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/RudderFbApp/activities?access_token=my_access_token`,
+ headers: {
+ 'x-forwarded-for': '1.2.3.4',
+ },
+ params: {
+ destination: 'fb',
+ },
+ FORM: testData1,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: '{"events_received":1,"fbtrace_id":"facebook_trace_id"}',
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fb_v1_scenario_3',
+ name: 'fb',
+ description: 'app event fails due to invalid timestamp',
+ successCriteria: 'Should return 400 with invalid timestamp error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_timestamp_correct_access_token`,
+ headers: {
+ 'x-forwarded-for': '1.2.3.4',
+ },
+ params: {
+ destination: 'fb',
+ },
+ FORM: testData1,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Event Timestamp Too Old',
+ statTags,
+ response: [
+ {
+ error: 'Event Timestamp Too Old',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fb_v1_scenario_4',
+ name: 'fb',
+ description: 'app event fails due to missing permissions',
+ successCriteria: 'Should return 400 with missing permissions error',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=invalid_account_id_valid_access_token`,
+ headers: {
+ 'x-forwarded-for': '1.2.3.4',
+ },
+ params: {
+ destination: 'fb',
+ },
+ FORM: testData2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message:
+ "Object with ID 'PIXEL_ID' / 'DATASET_ID' / 'AUDIENCE_ID' does not exist, cannot be loaded due to missing permissions, or does not support this operation",
+ statTags,
+ response: [
+ {
+ error:
+ "Object with ID 'PIXEL_ID' / 'DATASET_ID' / 'AUDIENCE_ID' does not exist, cannot be loaded due to missing permissions, or does not support this operation",
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/fb/dataDelivery/data.ts b/test/integrations/destinations/fb/dataDelivery/data.ts
index f9405ba4b30..9ee19af265c 100644
--- a/test/integrations/destinations/fb/dataDelivery/data.ts
+++ b/test/integrations/destinations/fb/dataDelivery/data.ts
@@ -1,6 +1,8 @@
import { VERSION } from '../../../../../src/v0/destinations/fb/config';
+import { testScenariosForV1API } from './business';
+import { otherScenariosV1 } from './other';
-export const data = [
+export const existingTestData = [
{
name: 'fb',
description: 'Test 0',
@@ -57,19 +59,20 @@ export const data = [
message: 'Invalid OAuth 2.0 access token',
destinationResponse: {
error: {
- message: 'The access token could not be decrypted',
- type: 'OAuthException',
code: 190,
fbtrace_id: 'fbpixel_trace_id',
+ message: 'The access token could not be decrypted',
+ type: 'OAuthException',
},
status: 500,
},
statTags: {
destType: 'FB',
- errorCategory: 'network',
+ errorCategory: 'dataValidation',
destinationId: 'Non-determininable',
workspaceId: 'Non-determininable',
- errorType: 'aborted',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
feature: 'dataDelivery',
implementation: 'native',
module: 'destination',
@@ -370,3 +373,5 @@ export const data = [
},
},
];
+
+export const data = [...existingTestData, ...testScenariosForV1API, ...otherScenariosV1];
diff --git a/test/integrations/destinations/fb/dataDelivery/other.ts b/test/integrations/destinations/fb/dataDelivery/other.ts
new file mode 100644
index 00000000000..9ac3f14fb54
--- /dev/null
+++ b/test/integrations/destinations/fb/dataDelivery/other.ts
@@ -0,0 +1,51 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { VERSION } from '../../../../../src/v0/destinations/fb/config';
+import { testData2 as testData, statTags } from './business';
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'fb_v1_other_scenario_1',
+ name: 'fb',
+ description: 'user update request is throttled due to too many calls',
+ successCriteria: 'Should return 429 with message there have been too many calls',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: `https://graph.facebook.com/${VERSION}/1234567891234567/events?access_token=throttled_valid_access_token`,
+ params: {
+ destination: 'fb',
+ },
+ FORM: testData,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 429,
+ message: 'API User Too Many Calls',
+ statTags: {
+ ...statTags,
+ errorType: 'throttled',
+ },
+ response: [
+ {
+ error: 'API User Too Many Calls',
+ statusCode: 429,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/fb/network.ts b/test/integrations/destinations/fb/network.ts
index 1a2f114d74c..31bbaf0b6ee 100644
--- a/test/integrations/destinations/fb/network.ts
+++ b/test/integrations/destinations/fb/network.ts
@@ -12,7 +12,7 @@ const fbPixelTcs = data
return nw.httpReq.url === fbendpoint;
})[0];
const clonedFbpTc = cloneDeep(fbpTc);
- const clonedFormData = cloneDeep(d.input.request.body.body.FORM);
+ const clonedFormData = cloneDeep(d.input.request.body.body?.FORM);
clonedFbpTc.httpReq.data = getFormData(clonedFormData).toString();
return clonedFbpTc;
});
@@ -21,7 +21,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/RudderFbApp/activities?access_token=invalid_access_token`,
- data: getFormData(data[0].input.request.body.body.FORM).toString(),
+ data: getFormData(data[0].input.request.body.body?.FORM).toString(),
params: { destination: 'fb' },
headers: { 'User-Agent': 'RudderLabs' },
method: 'POST',
@@ -41,7 +41,7 @@ export const networkCallsData = [
{
httpReq: {
url: `https://graph.facebook.com/${VERSION}/RudderFbApp/activities?access_token=my_access_token`,
- data: getFormData(data[1].input.request.body.body.FORM).toString(),
+ data: getFormData(data[1].input.request.body.body?.FORM).toString(),
params: { destination: 'fb' },
headers: { 'x-forwarded-for': '1.2.3.4', 'User-Agent': 'RudderLabs' },
method: 'POST',
diff --git a/test/integrations/destinations/fb/router/data.ts b/test/integrations/destinations/fb/router/data.ts
index 4daefad1414..d5872c78cda 100644
--- a/test/integrations/destinations/fb/router/data.ts
+++ b/test/integrations/destinations/fb/router/data.ts
@@ -12,11 +12,7 @@ export const data = [
{
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- destination_props: {
- Fb: {
- app_id: 'RudderFbApp',
- },
- },
+ destination_props: { Fb: { app_id: 'RudderFbApp' } },
context: {
device: {
id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
@@ -25,28 +21,16 @@ export const data = [
name: 'xiaomi',
type: 'Android',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
- screen: {
- height: '100',
- density: 50,
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
+ screen: { height: '100', density: 50 },
traits: {
email: 'abc@gmail.com',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- AM: true,
- All: false,
- GA: true,
- },
+ integrations: { AM: true, All: false, GA: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
revenue: 400,
@@ -86,17 +70,7 @@ export const data = [
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
versionSessionCount: 2,
win_amount: 0,
- products: [
- {
- product_id: 123,
- },
- {
- product_id: 345,
- },
- {
- product_id: 567,
- },
- ],
+ products: [{ product_id: 123 }, { product_id: 345 }, { product_id: 567 }],
},
timestamp: '2019-09-01T15:46:51.693229+05:30',
type: 'track',
@@ -121,23 +95,13 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
- destination: {
- Config: {
- appID: 'RudderFbApp',
- },
- },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: { Config: { appID: 'RudderFbApp' } },
},
{
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- destination_props: {
- Fb: {
- app_id: 'RudderFbApp',
- },
- },
+ destination_props: { Fb: { app_id: 'RudderFbApp' } },
context: {
device: {
id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
@@ -146,28 +110,16 @@ export const data = [
name: 'xiaomi',
type: 'Android',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
- screen: {
- height: '100',
- density: 50,
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
+ screen: { height: '100', density: 50 },
traits: {
email: 'abc@gmail.com',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- AM: true,
- All: false,
- GA: true,
- },
+ integrations: { AM: true, All: false, GA: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
revenue: 400,
@@ -208,17 +160,7 @@ export const data = [
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
versionSessionCount: 2,
win_amount: 0,
- products: [
- {
- product_id: 123,
- },
- {
- product_id: 345,
- },
- {
- product_id: 567,
- },
- ],
+ products: [{ product_id: 123 }, { product_id: 345 }, { product_id: 567 }],
},
timestamp: '2019-09-01T15:46:51.693229+05:30',
type: 'track',
@@ -243,14 +185,8 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
- destination: {
- Config: {
- appID: 'RudderFbApp',
- },
- },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: { Config: { appID: 'RudderFbApp' } },
},
],
destType: 'fb',
@@ -263,11 +199,7 @@ export const data = [
body: {
output: [
{
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
errorCategory: 'dataValidation',
errorType: 'instrumentation',
@@ -276,26 +208,14 @@ export const data = [
implementation: 'native',
module: 'destination',
},
- destination: {
- Config: {
- appID: 'RudderFbApp',
- },
- },
+ destination: { Config: { appID: 'RudderFbApp' } },
batched: false,
statusCode: 400,
error: 'If properties.revenue is present, properties.currency is required.',
},
{
- metadata: [
- {
- jobId: 2,
- },
- ],
- destination: {
- Config: {
- appID: 'RudderFbApp',
- },
- },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ destination: { Config: { appID: 'RudderFbApp' } },
statTags: {
errorCategory: 'dataValidation',
errorType: 'instrumentation',
diff --git a/test/integrations/destinations/fb_custom_audience/dataDelivery/business.ts b/test/integrations/destinations/fb_custom_audience/dataDelivery/business.ts
new file mode 100644
index 00000000000..c48ad227ab7
--- /dev/null
+++ b/test/integrations/destinations/fb_custom_audience/dataDelivery/business.ts
@@ -0,0 +1,427 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { getEndPoint } from '../../../../../src/v0/destinations/fb_custom_audience/config';
+
+export const statTags = {
+ destType: 'FB_CUSTOM_AUDIENCE',
+ destinationId: 'default-destinationId',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'default-workspaceId',
+};
+
+const testParams1 = {
+ access_token: 'ABC',
+ payload: {
+ is_raw: true,
+ data_source: {
+ sub_type: 'ANYTHING',
+ },
+ schema: [
+ 'EMAIL',
+ 'DOBM',
+ 'DOBD',
+ 'DOBY',
+ 'PHONE',
+ 'GEN',
+ 'FI',
+ 'MADID',
+ 'ZIP',
+ 'ST',
+ 'COUNTRY',
+ ],
+ data: [
+ [
+ 'shrouti@abc.com',
+ '2',
+ '13',
+ '2013',
+ '@09432457768',
+ 'f',
+ 'Ms.',
+ 'ABC',
+ 'ZIP ',
+ '123abc ',
+ 'IN',
+ ],
+ ],
+ },
+};
+
+export const testParams2 = {
+ access_token: 'ABC',
+ payload: {
+ is_raw: true,
+ data_source: {
+ sub_type: 'ANYTHING',
+ },
+ schema: ['DOBY', 'PHONE', 'GEN', 'FI', 'MADID', 'ZIP', 'ST', 'COUNTRY'],
+ data: [['2013', '@09432457768', 'f', 'Ms.', 'ABC', 'ZIP ', '123abc ', 'IN']],
+ },
+};
+
+const testParams3 = {
+ access_token: 'BCD',
+ payload: {
+ is_raw: true,
+ data_source: {
+ sub_type: 'ANYTHING',
+ },
+ schema: ['DOBM', 'DOBD', 'DOBY', 'PHONE', 'GEN', 'FI', 'MADID', 'ZIP', 'ST', 'COUNTRY'],
+ data: [['2', '13', '2013', '@09432457768', 'f', 'Ms.', 'ABC', 'ZIP ', '123abc ', 'IN']],
+ },
+};
+
+export const testScenariosForV1API: ProxyV1TestData[] = [
+ {
+ id: 'fbca_v1_scenario_1',
+ name: 'fb_custom_audience',
+ description: 'successfully delete users from audience',
+ successCriteria: 'Should return 200 with no error with destination response',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'successResponse',
+ },
+ params: testParams1,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error:
+ '{"audience_id":"aud1","session_id":"123","num_received":4,"num_invalid_entries":0,"invalid_entry_samples":{}}',
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_2',
+ name: 'fb_custom_audience',
+ description: 'user addition failed due to missing permission',
+ successCriteria: 'Fail with status code 400 due to missing permissions',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'POST',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'permissionMissingError',
+ },
+ params: testParams3,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message:
+ 'Missing permission. Please make sure you have ads_management permission and the application is included in the allowlist',
+ statTags,
+ response: [
+ {
+ error:
+ 'Missing permission. Please make sure you have ads_management permission and the application is included in the allowlist',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_3',
+ name: 'fb_custom_audience',
+ description: 'user deletion failed due to unavailable audience error',
+ successCriteria: 'Fail with status code 400',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'audienceUnavailableError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message:
+ 'Custom Audience Unavailable: The custom audience you are trying to use has not been shared with your ad account',
+ statTags,
+ response: [
+ {
+ error:
+ 'Custom Audience Unavailable: The custom audience you are trying to use has not been shared with your ad account',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_4',
+ name: 'fb_custom_audience',
+ description: 'user deletion failed because the custom audience has been deleted',
+ successCriteria: 'Fail with status code 400',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'audienceDeletedError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Custom Audience Has Been Deleted',
+ statTags,
+ response: [
+ {
+ error: 'Custom Audience Has Been Deleted',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_5',
+ name: 'fb_custom_audience',
+ description: 'Failed to update the custom audience for unknown reason',
+ successCriteria: 'Fail with status code 400',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'failedToUpdateAudienceError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Failed to update the custom audience',
+ statTags,
+ response: [
+ {
+ error: 'Failed to update the custom audience',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_6',
+ name: 'fb_custom_audience',
+ description:
+ 'Failed to update the custom audience as excessive number of parameters were passed in the request',
+ successCriteria: 'Fail with status code 400',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'parameterExceededError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'The number of parameters exceeded the maximum for this operation',
+ statTags,
+ response: [
+ {
+ error: 'The number of parameters exceeded the maximum for this operation',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_7',
+ name: 'fb_custom_audience',
+ description: 'user having permission issue while updating audience',
+ successCriteria: 'Fail with status code 403',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'code200PermissionError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 403,
+ message: '(#200) The current user can not update audience 23861283180290489',
+ statTags,
+ response: [
+ {
+ error: '(#200) The current user can not update audience 23861283180290489',
+ statusCode: 403,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'fbca_v1_scenario_8',
+ name: 'fb_custom_audience',
+ description: 'user deletion failed due expired access token error',
+ successCriteria: 'Fail with status code 400',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'accessTokenInvalidError',
+ },
+ params: testParams2,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message:
+ 'Error validating access token: Session has expired on Tuesday, 01-Aug-23 10:12:14 PDT. The current time is Sunday, 28-Jan-24 16:01:17 PST.',
+ statTags: {
+ ...statTags,
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
+ },
+ response: [
+ {
+ error:
+ 'Error validating access token: Session has expired on Tuesday, 01-Aug-23 10:12:14 PDT. The current time is Sunday, 28-Jan-24 16:01:17 PST.',
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/fb_custom_audience/dataDelivery/data.ts b/test/integrations/destinations/fb_custom_audience/dataDelivery/data.ts
index 3066dae8879..b41c656d9f9 100644
--- a/test/integrations/destinations/fb_custom_audience/dataDelivery/data.ts
+++ b/test/integrations/destinations/fb_custom_audience/dataDelivery/data.ts
@@ -1,6 +1,8 @@
import { getEndPoint } from '../../../../../src/v0/destinations/fb_custom_audience/config';
+import { testScenariosForV1API } from './business';
+import { otherScenariosV1 } from './other';
-export const data = [
+export const existingTestData = [
{
name: 'fb_custom_audience',
description: 'successfully adding users to audience',
@@ -572,4 +574,78 @@ export const data = [
},
},
},
+ {
+ name: 'fb_custom_audience',
+ description: 'user addition failed due expired access token error',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'accessTokenInvalidError',
+ },
+ params: {
+ access_token: 'ABC',
+ payload: {
+ is_raw: true,
+ data_source: {
+ sub_type: 'ANYTHING',
+ },
+ schema: ['DOBY', 'PHONE', 'GEN', 'FI', 'MADID', 'ZIP', 'ST', 'COUNTRY'],
+ data: [['2013', '@09432457768', 'f', 'Ms.', 'ABC', 'ZIP ', '123abc ', 'IN']],
+ },
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: {
+ error: {
+ code: 190,
+ error_subcode: 463,
+ fbtrace_id: 'A3b8C6PpI-kdIOwPwV4PANi',
+ message:
+ 'Error validating access token: Session has expired on Tuesday, 01-Aug-23 10:12:14 PDT. The current time is Sunday, 28-Jan-24 16:01:17 PST.',
+ type: 'OAuthException',
+ },
+ status: 400,
+ },
+ message:
+ 'Error validating access token: Session has expired on Tuesday, 01-Aug-23 10:12:14 PDT. The current time is Sunday, 28-Jan-24 16:01:17 PST.',
+ statTags: {
+ destType: 'FB_CUSTOM_AUDIENCE',
+ destinationId: 'Non-determininable',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ meta: 'accessTokenExpired',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
+ },
+ status: 400,
+ },
+ },
+ },
+ },
+ },
];
+
+export const data = [...existingTestData, ...testScenariosForV1API, ...otherScenariosV1];
diff --git a/test/integrations/destinations/fb_custom_audience/dataDelivery/other.ts b/test/integrations/destinations/fb_custom_audience/dataDelivery/other.ts
new file mode 100644
index 00000000000..52138604b07
--- /dev/null
+++ b/test/integrations/destinations/fb_custom_audience/dataDelivery/other.ts
@@ -0,0 +1,53 @@
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { ProxyV1TestData } from '../../../testTypes';
+import { getEndPoint } from '../../../../../src/v0/destinations/fb_custom_audience/config';
+import { statTags, testParams2 as testParams } from './business';
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'fbca_v1_other_scenario_1',
+ name: 'fb_custom_audience',
+ description: 'user update request is throttled due to too many calls to the ad account',
+ successCriteria:
+ 'Should return 429 with message there have been too many calls to this ad-account',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'tooManyCallsError',
+ },
+ params: testParams,
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ message: 'There have been too many calls to this ad-account.',
+ statTags: {
+ ...statTags,
+ errorType: 'throttled',
+ },
+ status: 429,
+ response: [
+ {
+ error: 'There have been too many calls to this ad-account.',
+ statusCode: 429,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/fb_custom_audience/network.ts b/test/integrations/destinations/fb_custom_audience/network.ts
index bbdc1ffc28c..9b498bc07e5 100644
--- a/test/integrations/destinations/fb_custom_audience/network.ts
+++ b/test/integrations/destinations/fb_custom_audience/network.ts
@@ -480,4 +480,47 @@ export const networkCallsData = [
status: 403,
},
},
+ {
+ httpReq: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: getEndPoint('aud1'),
+ headers: {
+ 'test-dest-response-key': 'accessTokenInvalidError',
+ },
+ params: {
+ access_token: 'ABC',
+ payload: {
+ is_raw: true,
+ data_source: {
+ sub_type: 'ANYTHING',
+ },
+ schema: ['DOBY', 'PHONE', 'GEN', 'FI', 'MADID', 'ZIP', 'ST', 'COUNTRY'],
+ data: [['2013', '@09432457768', 'f', 'Ms.', 'ABC', 'ZIP ', '123abc ', 'IN']],
+ },
+ },
+ userId: '',
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ httpRes: {
+ data: {
+ error: {
+ message:
+ 'Error validating access token: Session has expired on Tuesday, 01-Aug-23 10:12:14 PDT. The current time is Sunday, 28-Jan-24 16:01:17 PST.',
+ type: 'OAuthException',
+ code: 190,
+ error_subcode: 463,
+ fbtrace_id: 'A3b8C6PpI-kdIOwPwV4PANi',
+ },
+ },
+ status: 400,
+ },
+ },
];
diff --git a/test/integrations/destinations/fb_custom_audience/processor/data.ts b/test/integrations/destinations/fb_custom_audience/processor/data.ts
index 4f892f6fef4..267b9668651 100644
--- a/test/integrations/destinations/fb_custom_audience/processor/data.ts
+++ b/test/integrations/destinations/fb_custom_audience/processor/data.ts
@@ -1987,7 +1987,7 @@ export const data = [
'a953f09a1b6b6725b81956e9ad0b1eb49e3ad40004c04307ef8af6246a054116',
'3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278',
'7931aa2a1bed855457d1ddf6bc06ab4406a9fba0579045a4d6ff78f9c07c440f',
- null,
+ '',
'252f10c83610ebca1a059c0bae8255eba2f95be4d1d7bcfa89d7248a82d9f111',
'db0683221aebc02cc034b65ebcf7d1bddd1eb199e33fd23a31931947d13a11bc',
'abc',
@@ -2123,7 +2123,7 @@ export const data = [
'ST',
'COUNTRY',
],
- data: [[null, null, null, null, null, null, null, null, null, null, null]],
+ data: [['', '', '', '', '', '', '', '', '', '', '']],
},
},
body: {
@@ -2256,7 +2256,7 @@ export const data = [
'a953f09a1b6b6725b81956e9ad0b1eb49e3ad40004c04307ef8af6246a054116',
'3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278',
'7931aa2a1bed855457d1ddf6bc06ab4406a9fba0579045a4d6ff78f9c07c440f',
- null,
+ '',
'252f10c83610ebca1a059c0bae8255eba2f95be4d1d7bcfa89d7248a82d9f111',
'db0683221aebc02cc034b65ebcf7d1bddd1eb199e33fd23a31931947d13a11bc',
'abc',
diff --git a/test/integrations/destinations/fb_custom_audience/router/data.ts b/test/integrations/destinations/fb_custom_audience/router/data.ts
index efefb80a895..492b625b2df 100644
--- a/test/integrations/destinations/fb_custom_audience/router/data.ts
+++ b/test/integrations/destinations/fb_custom_audience/router/data.ts
@@ -51,17 +51,10 @@ export const data = [
],
},
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
accessToken: 'ABC',
@@ -131,17 +124,10 @@ export const data = [
],
},
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
accessToken: 'ABC',
@@ -171,9 +157,7 @@ export const data = [
IsProcessorEnabled: true,
},
libraries: [],
- request: {
- query: {},
- },
+ request: { query: {} },
},
],
destType: 'fb_custom_audience',
@@ -197,10 +181,7 @@ export const data = [
access_token: 'ABC',
payload: {
is_raw: true,
- data_source: {
- type: 'UNKNOWN',
- sub_type: 'ANYTHING',
- },
+ data_source: { type: 'UNKNOWN', sub_type: 'ANYTHING' },
schema: [
'EMAIL',
'DOBM',
@@ -231,12 +212,7 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -249,10 +225,7 @@ export const data = [
access_token: 'ABC',
payload: {
is_raw: true,
- data_source: {
- type: 'UNKNOWN',
- sub_type: 'ANYTHING',
- },
+ data_source: { type: 'UNKNOWN', sub_type: 'ANYTHING' },
schema: [
'EMAIL',
'DOBM',
@@ -283,20 +256,11 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -340,9 +304,7 @@ export const data = [
access_token: 'ABC',
payload: {
is_raw: true,
- data_source: {
- sub_type: 'ANYTHING',
- },
+ data_source: { sub_type: 'ANYTHING' },
schema: [
'EMAIL',
'DOBM',
@@ -373,12 +335,7 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -391,9 +348,7 @@ export const data = [
access_token: 'ABC',
payload: {
is_raw: true,
- data_source: {
- sub_type: 'ANYTHING',
- },
+ data_source: { sub_type: 'ANYTHING' },
schema: [
'EMAIL',
'DOBM',
@@ -424,20 +379,11 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -494,10 +440,7 @@ export const data = [
context: {
destinationFields: 'EMAIL, FN',
externalId: [
- {
- type: 'FB_CUSTOM_AUDIENCE-23848494844100489',
- identifierType: 'EMAIL',
- },
+ { type: 'FB_CUSTOM_AUDIENCE-23848494844100489', identifierType: 'EMAIL' },
],
mappedToDestination: 'true',
sources: {
@@ -512,46 +455,16 @@ export const data = [
properties: {
listData: {
add: [
- {
- EMAIL: 'dede@gmail.com',
- FN: 'vishwa',
- },
- {
- EMAIL: 'fchsjjn@gmail.com',
- FN: 'hskks',
- },
- {
- EMAIL: 'fghjnbjk@gmail.com',
- FN: 'ghfry',
- },
- {
- EMAIL: 'gvhjkk@gmail.com',
- FN: 'hbcwqe',
- },
- {
- EMAIL: 'qsdwert@egf.com',
- FN: 'dsfds',
- },
- {
- EMAIL: 'ascscxsaca@com',
- FN: 'scadscdvcda',
- },
- {
- EMAIL: 'abc@gmail.com',
- FN: 'subscribed',
- },
- {
- EMAIL: 'ddwnkl@gmail.com',
- FN: 'subscribed',
- },
- {
- EMAIL: 'subscribed@eewrfrd.com',
- FN: 'pending',
- },
- {
- EMAIL: 'acsdvdf@ddfvf.com',
- FN: 'pending',
- },
+ { EMAIL: 'dede@gmail.com', FN: 'vishwa' },
+ { EMAIL: 'fchsjjn@gmail.com', FN: 'hskks' },
+ { EMAIL: 'fghjnbjk@gmail.com', FN: 'ghfry' },
+ { EMAIL: 'gvhjkk@gmail.com', FN: 'hbcwqe' },
+ { EMAIL: 'qsdwert@egf.com', FN: 'dsfds' },
+ { EMAIL: 'ascscxsaca@com', FN: 'scadscdvcda' },
+ { EMAIL: 'abc@gmail.com', FN: 'subscribed' },
+ { EMAIL: 'ddwnkl@gmail.com', FN: 'subscribed' },
+ { EMAIL: 'subscribed@eewrfrd.com', FN: 'pending' },
+ { EMAIL: 'acsdvdf@ddfvf.com', FN: 'pending' },
],
},
},
@@ -590,9 +503,7 @@ export const data = [
isConnectionEnabled: true,
isProcessorEnabled: true,
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
message: {
@@ -603,10 +514,7 @@ export const data = [
event: 'Add_Audience',
context: {
externalId: [
- {
- type: 'FB_CUSTOM_AUDIENCE-23848494844100489',
- identifierType: 'EMAIL',
- },
+ { type: 'FB_CUSTOM_AUDIENCE-23848494844100489', identifierType: 'EMAIL' },
],
mappedToDestination: 'true',
sources: {
@@ -621,46 +529,16 @@ export const data = [
properties: {
listData: {
add: [
- {
- EMAIL: 'dede@gmail.com',
- FN: 'vishwa',
- },
- {
- EMAIL: 'fchsjjn@gmail.com',
- FN: 'hskks',
- },
- {
- EMAIL: 'fghjnbjk@gmail.com',
- FN: 'ghfry',
- },
- {
- EMAIL: 'gvhjkk@gmail.com',
- FN: 'hbcwqe',
- },
- {
- EMAIL: 'qsdwert@egf.com',
- FN: 'dsfds',
- },
- {
- EMAIL: 'ascscxsaca@com',
- FN: 'scadscdvcda',
- },
- {
- EMAIL: 'abc@gmail.com',
- FN: 'subscribed',
- },
- {
- EMAIL: 'ddwnkl@gmail.com',
- FN: 'subscribed',
- },
- {
- EMAIL: 'subscribed@eewrfrd.com',
- FN: 'pending',
- },
- {
- EMAIL: 'acsdvdf@ddfvf.com',
- FN: 'pending',
- },
+ { EMAIL: 'dede@gmail.com', FN: 'vishwa' },
+ { EMAIL: 'fchsjjn@gmail.com', FN: 'hskks' },
+ { EMAIL: 'fghjnbjk@gmail.com', FN: 'ghfry' },
+ { EMAIL: 'gvhjkk@gmail.com', FN: 'hbcwqe' },
+ { EMAIL: 'qsdwert@egf.com', FN: 'dsfds' },
+ { EMAIL: 'ascscxsaca@com', FN: 'scadscdvcda' },
+ { EMAIL: 'abc@gmail.com', FN: 'subscribed' },
+ { EMAIL: 'ddwnkl@gmail.com', FN: 'subscribed' },
+ { EMAIL: 'subscribed@eewrfrd.com', FN: 'pending' },
+ { EMAIL: 'acsdvdf@ddfvf.com', FN: 'pending' },
],
},
},
@@ -699,9 +577,7 @@ export const data = [
isConnectionEnabled: true,
isProcessorEnabled: true,
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
{
message: {
@@ -713,12 +589,7 @@ export const data = [
context: {
destinationFields:
'EMAIL, DOBM, DOBD, DOBY, PHONE, GEN, FI, MADID, ZIP, ST, COUNTRY',
- externalId: [
- {
- type: 'FB_CUSTOM_AUDIENCE-aud1',
- identifierType: 'EMAIL',
- },
- ],
+ externalId: [{ type: 'FB_CUSTOM_AUDIENCE-aud1', identifierType: 'EMAIL' }],
mappedToDestination: 'true',
sources: {
job_run_id: 'cgiiurt8um7k7n5dq480',
@@ -26730,9 +26601,7 @@ export const data = [
isConnectionEnabled: true,
isProcessorEnabled: true,
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 4, userId: 'u1' },
},
],
destType: 'fb_custom_audience',
@@ -26757,33 +26626,24 @@ export const data = [
payload: {
schema: ['EMAIL', 'FN'],
data: [
- ['7625cab24612c37df6d2f724721bb38a25095d0295e29b807238ee188b8aca43', null],
- ['b2b4abadd72190af54305c0d3abf1977fec4935016bb13ff28040d5712318dfd', null],
- ['c4b007d1c3c9a5d31bd4082237a913e8e0db1767225c2a5ef33be2716df005fa', null],
- ['94639be1bd9f17c05820164e9d71ef78558f117a9e8bfab43cf8015e08aa0b27', null],
- ['39b456cfb4bb07f9e6bb18698aa173171ca49c731fccc4790e9ecea808d24ae6', null],
- ['769f73387add781a481ca08300008a08fb2f1816aaed196137efc2e05976d711', null],
- ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08', null],
- ['da2d431121cd10578fd81f8f80344b06db59ea2d05a7b5d27536c8789ddae8f0', null],
- ['b100c2ec0718fe6b4805b623aeec6710719d042ceea55f5c8135b010ec1c7b36', null],
- ['0c1d1b0ba547a742013366d6fbc8f71dd77f566d94e41ed9f828a74b96928161', null],
+ ['7625cab24612c37df6d2f724721bb38a25095d0295e29b807238ee188b8aca43', ''],
+ ['b2b4abadd72190af54305c0d3abf1977fec4935016bb13ff28040d5712318dfd', ''],
+ ['c4b007d1c3c9a5d31bd4082237a913e8e0db1767225c2a5ef33be2716df005fa', ''],
+ ['94639be1bd9f17c05820164e9d71ef78558f117a9e8bfab43cf8015e08aa0b27', ''],
+ ['39b456cfb4bb07f9e6bb18698aa173171ca49c731fccc4790e9ecea808d24ae6', ''],
+ ['769f73387add781a481ca08300008a08fb2f1816aaed196137efc2e05976d711', ''],
+ ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08', ''],
+ ['da2d431121cd10578fd81f8f80344b06db59ea2d05a7b5d27536c8789ddae8f0', ''],
+ ['b100c2ec0718fe6b4805b623aeec6710719d042ceea55f5c8135b010ec1c7b36', ''],
+ ['0c1d1b0ba547a742013366d6fbc8f71dd77f566d94e41ed9f828a74b96928161', ''],
],
},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -26854,11 +26714,7 @@ export const data = [
},
error:
'context.destinationFields is required property for events mapped to destination ',
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 400,
statTags: {
@@ -33399,12 +33255,7 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
},
{
@@ -39934,12 +39785,7 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
},
{
@@ -46443,12 +46289,7 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
},
{
@@ -52952,20 +52793,11 @@ export const data = [
],
},
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/freshmarketer/network.ts b/test/integrations/destinations/freshmarketer/network.ts
new file mode 100644
index 00000000000..9d661f26867
--- /dev/null
+++ b/test/integrations/destinations/freshmarketer/network.ts
@@ -0,0 +1,495 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_accounts/upsert',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ sales_account: {
+ id: 70003771396,
+ name: 'postman2.0',
+ address: 'Red Colony',
+ city: 'Pune',
+ state: 'Goa',
+ zipcode: null,
+ country: null,
+ number_of_employees: 11,
+ annual_revenue: 1000,
+ website: null,
+ owner_id: null,
+ phone: '919191919191',
+ open_deals_amount: null,
+ open_deals_count: null,
+ won_deals_amount: null,
+ won_deals_count: null,
+ last_contacted: null,
+ last_contacted_mode: null,
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ links: {
+ conversations:
+ '/crm/sales/sales_accounts/70003771396/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ document_associations: '/crm/sales/sales_accounts/70003771396/document_associations',
+ notes: '/crm/sales/sales_accounts/70003771396/notes?include=creater',
+ tasks:
+ '/crm/sales/sales_accounts/70003771396/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/sales_accounts/70003771396/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ },
+ custom_field: {},
+ created_at: '2022-08-17T04:15:00-04:00',
+ updated_at: '2022-08-24T06:03:31-04:00',
+ avatar: null,
+ parent_sales_account_id: null,
+ recent_note: null,
+ last_contacted_via_sales_activity: null,
+ last_contacted_sales_activity_mode: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ last_assigned_at: null,
+ tags: [],
+ is_deleted: false,
+ team_user_ids: null,
+ has_connections: false,
+ record_type_id: '71010794477',
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert?include=sales_accounts',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ contact: {
+ id: 70042006456,
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ display_name: 'Rk Mishra',
+ avatar: null,
+ job_title: null,
+ city: null,
+ state: null,
+ zipcode: null,
+ country: null,
+ email: 'testuser@google.com',
+ emails: [
+ {
+ id: 70037311213,
+ value: 'testuser@google.com',
+ is_primary: true,
+ label: null,
+ _destroy: false,
+ },
+ ],
+ time_zone: 'IST',
+ work_number: '9988776655',
+ mobile_number: '19265559504',
+ address: null,
+ last_seen: null,
+ lead_score: 26,
+ last_contacted: null,
+ open_deals_amount: null,
+ won_deals_amount: null,
+ links: {
+ conversations:
+ '/crm/sales/contacts/70042006456/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ timeline_feeds: '/crm/sales/contacts/70042006456/timeline_feeds',
+ document_associations: '/crm/sales/contacts/70042006456/document_associations',
+ notes: '/crm/sales/contacts/70042006456/notes?include=creater',
+ tasks:
+ '/crm/sales/contacts/70042006456/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/contacts/70042006456/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ reminders:
+ '/crm/sales/contacts/70042006456/reminders?include=creater,owner,updater,targetable',
+ duplicates: '/crm/sales/contacts/70042006456/duplicates',
+ connections: '/crm/sales/contacts/70042006456/connections',
+ },
+ last_contacted_sales_activity_mode: null,
+ custom_field: {},
+ created_at: '2022-08-09T03:22:12-04:00',
+ updated_at: '2022-08-30T00:33:27-04:00',
+ keyword: 'drilling',
+ medium: 'facebook',
+ last_contacted_mode: null,
+ recent_note: null,
+ won_deals_count: null,
+ last_contacted_via_sales_activity: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ web_form_ids: null,
+ open_deals_count: null,
+ last_assigned_at: '2022-08-29T05:51:24-04:00',
+ tags: [],
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ is_deleted: false,
+ team_user_ids: null,
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_email: null,
+ subscription_status: 1,
+ subscription_types: '2;3;4;5;1',
+ customer_fit: 2,
+ record_type_id: '71010794476',
+ whatsapp_subscription_status: 2,
+ sms_subscription_status: 2,
+ last_seen_chat: null,
+ first_seen_chat: null,
+ locale: null,
+ total_sessions: null,
+ phone_numbers: [],
+ sales_accounts: [
+ {
+ partial: true,
+ id: 70003771198,
+ name: 'div-quer',
+ avatar: null,
+ website: null,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ is_primary: true,
+ },
+ {
+ partial: true,
+ id: 70003825177,
+ name: 'BisleriGroup',
+ avatar: null,
+ website: null,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ is_primary: false,
+ },
+ ],
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/selector/sales_activity_types',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ sales_activity_types: [
+ {
+ partial: true,
+ id: 70000666879,
+ name: 'own-calender',
+ internal_name: 'cappointment',
+ show_in_conversation: true,
+ position: 1,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000663932,
+ name: 'fb-support',
+ internal_name: 'facebook',
+ show_in_conversation: true,
+ position: 2,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000663746,
+ name: 'twitter sales',
+ internal_name: 'twitter',
+ show_in_conversation: true,
+ position: 3,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000646396,
+ name: 'linked sales',
+ internal_name: 'linkedin',
+ show_in_conversation: true,
+ position: 4,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000642330,
+ name: 'facebook sales',
+ internal_name: 'facebook',
+ show_in_conversation: true,
+ position: 5,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612897,
+ name: 'Chat',
+ internal_name: 'chat',
+ show_in_conversation: true,
+ position: 6,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612898,
+ name: 'Phone',
+ internal_name: 'phone',
+ show_in_conversation: true,
+ position: 7,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612899,
+ name: 'Meeting',
+ internal_name: 'appointment',
+ show_in_conversation: true,
+ position: 8,
+ is_default: true,
+ is_checkedin: true,
+ },
+ {
+ partial: true,
+ id: 70000612900,
+ name: 'Task',
+ internal_name: 'task',
+ show_in_conversation: true,
+ position: 9,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612901,
+ name: 'Email',
+ internal_name: 'email',
+ show_in_conversation: true,
+ position: 10,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612902,
+ name: 'SMS Outgoing',
+ internal_name: 'sms_outgoing',
+ show_in_conversation: true,
+ position: 11,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612903,
+ name: 'Reminder',
+ internal_name: 'reminder',
+ show_in_conversation: false,
+ position: 12,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612904,
+ name: 'SMS Incoming',
+ internal_name: 'sms_incoming',
+ show_in_conversation: true,
+ position: 13,
+ is_default: true,
+ is_checkedin: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ contact: {
+ id: 70054866612,
+ first_name: null,
+ last_name: null,
+ display_name: 'jamessampleton120@gmail.com',
+ avatar: null,
+ job_title: null,
+ city: null,
+ state: null,
+ zipcode: null,
+ country: null,
+ email: 'jamessampleton120@gmail.com',
+ emails: [
+ {
+ id: 70047409219,
+ value: 'jamessampleton120@gmail.com',
+ is_primary: true,
+ label: null,
+ _destroy: false,
+ },
+ ],
+ time_zone: null,
+ work_number: null,
+ mobile_number: null,
+ address: null,
+ last_seen: null,
+ lead_score: 0,
+ last_contacted: null,
+ open_deals_amount: null,
+ won_deals_amount: null,
+ links: {
+ conversations:
+ '/crm/sales/contacts/70054866612/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ timeline_feeds: '/crm/sales/contacts/70054866612/timeline_feeds',
+ document_associations: '/crm/sales/contacts/70054866612/document_associations',
+ notes: '/crm/sales/contacts/70054866612/notes?include=creater',
+ tasks:
+ '/crm/sales/contacts/70054866612/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/contacts/70054866612/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ reminders:
+ '/crm/sales/contacts/70054866612/reminders?include=creater,owner,updater,targetable',
+ duplicates: '/crm/sales/contacts/70054866612/duplicates',
+ connections: '/crm/sales/contacts/70054866612/connections',
+ },
+ last_contacted_sales_activity_mode: null,
+ custom_field: {},
+ created_at: '2022-10-11T08:42:15-04:00',
+ updated_at: '2022-10-11T08:42:15-04:00',
+ keyword: null,
+ medium: null,
+ last_contacted_mode: null,
+ recent_note: null,
+ won_deals_count: null,
+ last_contacted_via_sales_activity: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ web_form_ids: null,
+ open_deals_count: null,
+ last_assigned_at: null,
+ tags: [],
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ is_deleted: false,
+ team_user_ids: null,
+ external_id: null,
+ work_email: null,
+ subscription_status: 1,
+ subscription_types: '2;3;4;5;1',
+ customer_fit: 0,
+ record_type_id: '71012139284',
+ whatsapp_subscription_status: 2,
+ sms_subscription_status: 2,
+ last_seen_chat: null,
+ first_seen_chat: null,
+ locale: null,
+ total_sessions: null,
+ phone_numbers: [],
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/lists',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ lists: [
+ {
+ id: 70000053624,
+ name: 'Sample list',
+ },
+ {
+ id: 70000056575,
+ name: 'list1-test',
+ },
+ {
+ id: 70000058627,
+ name: 'Jio 5G Group',
+ },
+ {
+ id: 70000058628,
+ name: 'Airtel 5G Group',
+ },
+ {
+ id: 70000059716,
+ name: 'Voda 5G',
+ },
+ ],
+ meta: {
+ total_pages: 1,
+ total: 5,
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/selector/lifecycle_stages',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ lifecycle_stages: [
+ {
+ id: 71012139274,
+ name: 'Sales Qualified Lead start',
+ position: 1,
+ disabled: false,
+ default: true,
+ type: 'Sales Qualified Lead',
+ contact_status_ids: [70000697858, 70000697859, 70000697860],
+ },
+ {
+ id: 71012139273,
+ name: 'Lead',
+ position: 2,
+ disabled: false,
+ default: true,
+ type: 'Lead',
+ contact_status_ids: [70000697854, 70000697855, 70000697856, 70000697857],
+ },
+ {
+ id: 71012806409,
+ name: 'final Customer',
+ position: 3,
+ disabled: false,
+ default: false,
+ type: 'Custom',
+ contact_status_ids: [70000736543, 70000736544],
+ },
+ {
+ id: 71012139275,
+ name: 'Customer',
+ position: 4,
+ disabled: false,
+ default: true,
+ type: 'Customer',
+ contact_status_ids: [70000697861, 70000697862],
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/freshmarketer/processor/data.ts b/test/integrations/destinations/freshmarketer/processor/data.ts
new file mode 100644
index 00000000000..ed920faef0a
--- /dev/null
+++ b/test/integrations/destinations/freshmarketer/processor/data.ts
@@ -0,0 +1,3147 @@
+export const data = [
+ {
+ name: 'freshmarketer',
+ description: 'Identify call for creating new user',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ last_name: 'Mishra',
+ created_at: '2022-06-22T10:57:58Z',
+ first_name: 'Rk',
+ updated_at: '2022-06-22T10:57:58Z',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_number: '9988776655',
+ mobile_number: '1-926-555-9504',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Identify call with numbers in lifecycleStageId, ownerId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ last_name: 'Mishra',
+ created_at: '2022-06-22T10:57:58Z',
+ first_name: 'Rk',
+ updated_at: '2022-06-22T10:57:58Z',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_number: '9988776655',
+ mobile_number: '1-926-555-9504',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Identify call with wrong data type in lifecycleStageId, ownerId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 'rudderSample',
+ phone: '9988776655',
+ ownerId: 'rudderSample',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'owner_id,lifecycle_stage_id: invalid number format',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Identify call, email is not provided.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 'rudderSample',
+ phone: '9988776655',
+ owner_id: 'rudderSample',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "email"',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: testing with mock api',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser@google.com',
+ },
+ },
+ traits: {
+ groupType: 'accounts',
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ sales_accounts: [
+ {
+ id: 70003771198,
+ name: 'div-quer',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: true,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ {
+ id: 70003825177,
+ name: 'BisleriGroup',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: false,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ {
+ id: 70003771396,
+ is_primary: false,
+ },
+ ],
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: name is required field.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser@google.com',
+ },
+ },
+ traits: {
+ groupType: 'accounts',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "name"',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'missing message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser4google.com',
+ },
+ },
+ traits: {
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Wrong message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser4google.com',
+ },
+ },
+ traits: {
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'page',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type page not supported',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: user email is missing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {},
+ },
+ traits: {
+ groupType: 'accounts',
+ name: 'div-quer',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Lal colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_account: {
+ city: 'Lal colony',
+ name: 'div-quer',
+ phone: '919191919191',
+ state: 'Haryana',
+ address: 'Red Colony',
+ created_at: '2022-06-22T10:57:58Z',
+ updated_at: '2022-06-22T10:57:58Z',
+ annual_revenue: 1000,
+ number_of_employees: 51,
+ },
+ unique_identifier: {
+ name: 'div-quer',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_accounts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Identify call: Email is not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ first_name: 'Rk',
+ last_name: 'Narayan',
+ mobileNumber: '1-926-555-9504',
+ phone: '9988776655',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "email"',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call, event is not supported.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ },
+ event: 'Add to Cart',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'event name Add to Cart is not supported. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: some required properties is missing for sales_activity',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "properties.title"',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: for salesActivityName',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-calender',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ created_at: '2020-10-20T08:14:28.778Z',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: 70054866612,
+ targetable_type: 'Contact',
+ sales_activity_name: 'own-calender',
+ sales_activity_type_id: 70000666879,
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: lifecycle_stage_id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton3@gmail.com',
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ lifecycle_stage_id: '71012139273',
+ },
+ unique_identifier: {
+ emails: 'jamessampleton3@gmail.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: In lifecycle stage, email is missing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email is required for updating life Cycle Stages. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: Either of lifecycleStageName or lifecycleStageId is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either of lifecycleStageName or lifecycleStageId is required. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: Either of sales activity name or sales activity type id is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either of sales activity name or sales activity type id is required. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description:
+ 'Track call: Either of email or targetable_id is required for creating sales activity.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-calender',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Either of email or targetable_id is required for creating sales activity. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: sales activity with salesActivityTypeId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ salesActivityTypeId: '70000663932',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ created_at: '2020-10-20T08:14:28.778Z',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: 70054866612,
+ targetable_type: 'Contact',
+ sales_activity_type_id: '70000663932',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: updated sales activity with salesActivityTypeId and targetableId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ id: '70052305908',
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ salesActivityTypeId: '70000663932',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ created_at: '2020-10-20T08:14:28.778Z',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: '70052305908',
+ targetable_type: 'Contact',
+ sales_activity_type_id: '70000663932',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Unsupported message Type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ type: 'page',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type page not supported',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: email is required for adding contacts to marketing lists',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ traits: {
+ groupType: 'marketing_lists',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email is required for adding in the marketing lists. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: group type is not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ traits: {
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'groupType is required for Group call',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: add contacts in existing marketing lists',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'jamessampleton1@gmail.com',
+ },
+ },
+ traits: {
+ groupType: 'marketing_lists',
+ listName: 'Voda 5G',
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ ids: [70054866612],
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://domain-rudder.myfreshworks.com/crm/sales/api/lists/70000059716/add_contacts',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: groupType is not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ traits: {
+ groupType: 'marketing',
+ listName: 'Voda 5G',
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'groupType marketing is not supported. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: listId or listName is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ traits: {
+ email: 'jamessampleton1@gmail.com',
+ },
+ },
+ traits: {
+ groupType: 'marketing_lists',
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'listId or listName is required. Aborting!',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Group call: add marketing lists with listId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'jamessampleton1@gmail.com',
+ },
+ },
+ traits: {
+ listId: '70000058627',
+ groupType: 'marketing_lists',
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ ids: [70054866612],
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://domain-rudder.myfreshworks.com/crm/sales/api/lists/70000058627/add_contacts',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: with wrong sales activity name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-list',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "sales Activity own-list doesn't exists. Aborting!",
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: update contacts with sales Activity name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton6@gmail.com',
+ lifecycleStageName: 'final Customer',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ lifecycle_stage_id: 71012806409,
+ },
+ unique_identifier: {
+ emails: 'jamessampleton6@gmail.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: with wrong lifecycleStageName',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton6@gmail.com',
+ lifecycleStageName: 'final ExCustomer',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'failed to fetch lifeCycleStages with final ExCustomer',
+ statTags: {
+ destType: 'FRESHMARKETER',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshmarketer',
+ description: 'Track call: Multiplexing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-calender',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ lifecycleStageId: '71012139273',
+ },
+ event: 'test_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ rudderEventsToFreshmarketerEvents: [
+ {
+ from: 'test_activity',
+ to: 'sales_activity',
+ },
+ {
+ from: 'test_activity',
+ to: 'lifecycle_stage',
+ },
+ {
+ from: 'test_event',
+ to: 'lifecycle_stage',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ created_at: '2020-10-20T08:14:28.778Z',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: 70054866612,
+ targetable_type: 'Contact',
+ sales_activity_name: 'own-calender',
+ sales_activity_type_id: 70000666879,
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ userId: '',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ body: {
+ JSON: {
+ contact: {
+ lifecycle_stage_id: '71012139273',
+ },
+ unique_identifier: {
+ emails: 'test@rudderstack.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ type: 'REST',
+ files: {},
+ userId: '',
+ method: 'POST',
+ params: {},
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/freshmarketer/router/data.ts b/test/integrations/destinations/freshmarketer/router/data.ts
new file mode 100644
index 00000000000..03690b6e276
--- /dev/null
+++ b/test/integrations/destinations/freshmarketer/router/data.ts
@@ -0,0 +1,304 @@
+export const data = [
+ {
+ name: 'freshmarketer',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: 'iOS', version: '14.4.1' },
+ screen: { density: 2 },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: 'iOS', version: '14.4.1' },
+ screen: { density: 2 },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ {
+ destination: {
+ Config: { apiKey: 'dummyApiKey', domain: 'domain-rudder.myfreshworks.com' },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: 'iOS', version: '14.4.1' },
+ screen: { density: 2 },
+ traits: { email: 'testuser@google.com' },
+ },
+ traits: {
+ groupType: 'accounts',
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ destType: 'freshmarketer',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ work_number: '9988776655',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ mobile_number: '1-926-555-9504',
+ created_at: '2022-06-22T10:57:58Z',
+ updated_at: '2022-06-22T10:57:58Z',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: { emails: 'testuser@google.com' },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ work_number: '9988776655',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ mobile_number: '1-926-555-9504',
+ created_at: '2022-06-22T10:57:58Z',
+ updated_at: '2022-06-22T10:57:58Z',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: { emails: 'testuser@google.com' },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ sales_accounts: [
+ {
+ id: 70003771198,
+ name: 'div-quer',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: true,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ {
+ id: 70003825177,
+ name: 'BisleriGroup',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: false,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ { id: 70003771396, is_primary: false },
+ ],
+ },
+ unique_identifier: { emails: 'testuser@google.com' },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummyApiKey', domain: 'domain-rudder.myfreshworks.com' },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/freshsales/network.ts b/test/integrations/destinations/freshsales/network.ts
new file mode 100644
index 00000000000..9d661f26867
--- /dev/null
+++ b/test/integrations/destinations/freshsales/network.ts
@@ -0,0 +1,495 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_accounts/upsert',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ sales_account: {
+ id: 70003771396,
+ name: 'postman2.0',
+ address: 'Red Colony',
+ city: 'Pune',
+ state: 'Goa',
+ zipcode: null,
+ country: null,
+ number_of_employees: 11,
+ annual_revenue: 1000,
+ website: null,
+ owner_id: null,
+ phone: '919191919191',
+ open_deals_amount: null,
+ open_deals_count: null,
+ won_deals_amount: null,
+ won_deals_count: null,
+ last_contacted: null,
+ last_contacted_mode: null,
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ links: {
+ conversations:
+ '/crm/sales/sales_accounts/70003771396/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ document_associations: '/crm/sales/sales_accounts/70003771396/document_associations',
+ notes: '/crm/sales/sales_accounts/70003771396/notes?include=creater',
+ tasks:
+ '/crm/sales/sales_accounts/70003771396/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/sales_accounts/70003771396/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ },
+ custom_field: {},
+ created_at: '2022-08-17T04:15:00-04:00',
+ updated_at: '2022-08-24T06:03:31-04:00',
+ avatar: null,
+ parent_sales_account_id: null,
+ recent_note: null,
+ last_contacted_via_sales_activity: null,
+ last_contacted_sales_activity_mode: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ last_assigned_at: null,
+ tags: [],
+ is_deleted: false,
+ team_user_ids: null,
+ has_connections: false,
+ record_type_id: '71010794477',
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert?include=sales_accounts',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ contact: {
+ id: 70042006456,
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ display_name: 'Rk Mishra',
+ avatar: null,
+ job_title: null,
+ city: null,
+ state: null,
+ zipcode: null,
+ country: null,
+ email: 'testuser@google.com',
+ emails: [
+ {
+ id: 70037311213,
+ value: 'testuser@google.com',
+ is_primary: true,
+ label: null,
+ _destroy: false,
+ },
+ ],
+ time_zone: 'IST',
+ work_number: '9988776655',
+ mobile_number: '19265559504',
+ address: null,
+ last_seen: null,
+ lead_score: 26,
+ last_contacted: null,
+ open_deals_amount: null,
+ won_deals_amount: null,
+ links: {
+ conversations:
+ '/crm/sales/contacts/70042006456/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ timeline_feeds: '/crm/sales/contacts/70042006456/timeline_feeds',
+ document_associations: '/crm/sales/contacts/70042006456/document_associations',
+ notes: '/crm/sales/contacts/70042006456/notes?include=creater',
+ tasks:
+ '/crm/sales/contacts/70042006456/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/contacts/70042006456/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ reminders:
+ '/crm/sales/contacts/70042006456/reminders?include=creater,owner,updater,targetable',
+ duplicates: '/crm/sales/contacts/70042006456/duplicates',
+ connections: '/crm/sales/contacts/70042006456/connections',
+ },
+ last_contacted_sales_activity_mode: null,
+ custom_field: {},
+ created_at: '2022-08-09T03:22:12-04:00',
+ updated_at: '2022-08-30T00:33:27-04:00',
+ keyword: 'drilling',
+ medium: 'facebook',
+ last_contacted_mode: null,
+ recent_note: null,
+ won_deals_count: null,
+ last_contacted_via_sales_activity: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ web_form_ids: null,
+ open_deals_count: null,
+ last_assigned_at: '2022-08-29T05:51:24-04:00',
+ tags: [],
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ is_deleted: false,
+ team_user_ids: null,
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_email: null,
+ subscription_status: 1,
+ subscription_types: '2;3;4;5;1',
+ customer_fit: 2,
+ record_type_id: '71010794476',
+ whatsapp_subscription_status: 2,
+ sms_subscription_status: 2,
+ last_seen_chat: null,
+ first_seen_chat: null,
+ locale: null,
+ total_sessions: null,
+ phone_numbers: [],
+ sales_accounts: [
+ {
+ partial: true,
+ id: 70003771198,
+ name: 'div-quer',
+ avatar: null,
+ website: null,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ is_primary: true,
+ },
+ {
+ partial: true,
+ id: 70003825177,
+ name: 'BisleriGroup',
+ avatar: null,
+ website: null,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ is_primary: false,
+ },
+ ],
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/selector/sales_activity_types',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ sales_activity_types: [
+ {
+ partial: true,
+ id: 70000666879,
+ name: 'own-calender',
+ internal_name: 'cappointment',
+ show_in_conversation: true,
+ position: 1,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000663932,
+ name: 'fb-support',
+ internal_name: 'facebook',
+ show_in_conversation: true,
+ position: 2,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000663746,
+ name: 'twitter sales',
+ internal_name: 'twitter',
+ show_in_conversation: true,
+ position: 3,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000646396,
+ name: 'linked sales',
+ internal_name: 'linkedin',
+ show_in_conversation: true,
+ position: 4,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000642330,
+ name: 'facebook sales',
+ internal_name: 'facebook',
+ show_in_conversation: true,
+ position: 5,
+ is_default: false,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612897,
+ name: 'Chat',
+ internal_name: 'chat',
+ show_in_conversation: true,
+ position: 6,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612898,
+ name: 'Phone',
+ internal_name: 'phone',
+ show_in_conversation: true,
+ position: 7,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612899,
+ name: 'Meeting',
+ internal_name: 'appointment',
+ show_in_conversation: true,
+ position: 8,
+ is_default: true,
+ is_checkedin: true,
+ },
+ {
+ partial: true,
+ id: 70000612900,
+ name: 'Task',
+ internal_name: 'task',
+ show_in_conversation: true,
+ position: 9,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612901,
+ name: 'Email',
+ internal_name: 'email',
+ show_in_conversation: true,
+ position: 10,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612902,
+ name: 'SMS Outgoing',
+ internal_name: 'sms_outgoing',
+ show_in_conversation: true,
+ position: 11,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612903,
+ name: 'Reminder',
+ internal_name: 'reminder',
+ show_in_conversation: false,
+ position: 12,
+ is_default: true,
+ is_checkedin: false,
+ },
+ {
+ partial: true,
+ id: 70000612904,
+ name: 'SMS Incoming',
+ internal_name: 'sms_incoming',
+ show_in_conversation: true,
+ position: 13,
+ is_default: true,
+ is_checkedin: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ contact: {
+ id: 70054866612,
+ first_name: null,
+ last_name: null,
+ display_name: 'jamessampleton120@gmail.com',
+ avatar: null,
+ job_title: null,
+ city: null,
+ state: null,
+ zipcode: null,
+ country: null,
+ email: 'jamessampleton120@gmail.com',
+ emails: [
+ {
+ id: 70047409219,
+ value: 'jamessampleton120@gmail.com',
+ is_primary: true,
+ label: null,
+ _destroy: false,
+ },
+ ],
+ time_zone: null,
+ work_number: null,
+ mobile_number: null,
+ address: null,
+ last_seen: null,
+ lead_score: 0,
+ last_contacted: null,
+ open_deals_amount: null,
+ won_deals_amount: null,
+ links: {
+ conversations:
+ '/crm/sales/contacts/70054866612/conversations/all?include=email_conversation_recipients%2Ctargetable%2Cphone_number%2Cphone_caller%2Cnote%2Cuser&per_page=3',
+ timeline_feeds: '/crm/sales/contacts/70054866612/timeline_feeds',
+ document_associations: '/crm/sales/contacts/70054866612/document_associations',
+ notes: '/crm/sales/contacts/70054866612/notes?include=creater',
+ tasks:
+ '/crm/sales/contacts/70054866612/tasks?include=creater,owner,updater,targetable,users,task_type',
+ appointments:
+ '/crm/sales/contacts/70054866612/appointments?include=creater,owner,updater,targetable,appointment_attendees,conference,note',
+ reminders:
+ '/crm/sales/contacts/70054866612/reminders?include=creater,owner,updater,targetable',
+ duplicates: '/crm/sales/contacts/70054866612/duplicates',
+ connections: '/crm/sales/contacts/70054866612/connections',
+ },
+ last_contacted_sales_activity_mode: null,
+ custom_field: {},
+ created_at: '2022-10-11T08:42:15-04:00',
+ updated_at: '2022-10-11T08:42:15-04:00',
+ keyword: null,
+ medium: null,
+ last_contacted_mode: null,
+ recent_note: null,
+ won_deals_count: null,
+ last_contacted_via_sales_activity: null,
+ completed_sales_sequences: null,
+ active_sales_sequences: null,
+ web_form_ids: null,
+ open_deals_count: null,
+ last_assigned_at: null,
+ tags: [],
+ facebook: null,
+ twitter: null,
+ linkedin: null,
+ is_deleted: false,
+ team_user_ids: null,
+ external_id: null,
+ work_email: null,
+ subscription_status: 1,
+ subscription_types: '2;3;4;5;1',
+ customer_fit: 0,
+ record_type_id: '71012139284',
+ whatsapp_subscription_status: 2,
+ sms_subscription_status: 2,
+ last_seen_chat: null,
+ first_seen_chat: null,
+ locale: null,
+ total_sessions: null,
+ phone_numbers: [],
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/lists',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ lists: [
+ {
+ id: 70000053624,
+ name: 'Sample list',
+ },
+ {
+ id: 70000056575,
+ name: 'list1-test',
+ },
+ {
+ id: 70000058627,
+ name: 'Jio 5G Group',
+ },
+ {
+ id: 70000058628,
+ name: 'Airtel 5G Group',
+ },
+ {
+ id: 70000059716,
+ name: 'Voda 5G',
+ },
+ ],
+ meta: {
+ total_pages: 1,
+ total: 5,
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://domain-rudder.myfreshworks.com/crm/sales/api/selector/lifecycle_stages',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ lifecycle_stages: [
+ {
+ id: 71012139274,
+ name: 'Sales Qualified Lead start',
+ position: 1,
+ disabled: false,
+ default: true,
+ type: 'Sales Qualified Lead',
+ contact_status_ids: [70000697858, 70000697859, 70000697860],
+ },
+ {
+ id: 71012139273,
+ name: 'Lead',
+ position: 2,
+ disabled: false,
+ default: true,
+ type: 'Lead',
+ contact_status_ids: [70000697854, 70000697855, 70000697856, 70000697857],
+ },
+ {
+ id: 71012806409,
+ name: 'final Customer',
+ position: 3,
+ disabled: false,
+ default: false,
+ type: 'Custom',
+ contact_status_ids: [70000736543, 70000736544],
+ },
+ {
+ id: 71012139275,
+ name: 'Customer',
+ position: 4,
+ disabled: false,
+ default: true,
+ type: 'Customer',
+ contact_status_ids: [70000697861, 70000697862],
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/freshsales/processor/data.ts b/test/integrations/destinations/freshsales/processor/data.ts
new file mode 100644
index 00000000000..eca3b88d9dd
--- /dev/null
+++ b/test/integrations/destinations/freshsales/processor/data.ts
@@ -0,0 +1,2688 @@
+export const data = [
+ {
+ name: 'freshsales',
+ description: 'Track call, event is not supported.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ },
+ event: {
+ name: 'Add to Cart',
+ },
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event is a required field and should be a string',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Identify call for creating new user',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ last_name: 'Mishra',
+ created_at: '2022-06-22T10:57:58Z',
+ first_name: 'Rk',
+ updated_at: '2022-06-22T10:57:58Z',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_number: '9988776655',
+ mobile_number: '1-926-555-9504',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Identify call with numbers in lifecycleStageId, ownerId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 71010794467,
+ phone: '9988776655',
+ owner_id: '70000090119',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ last_name: 'Mishra',
+ created_at: '2022-06-22T10:57:58Z',
+ first_name: 'Rk',
+ updated_at: '2022-06-22T10:57:58Z',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ work_number: '9988776655',
+ mobile_number: '1-926-555-9504',
+ lifecycle_stage_id: 71010794467,
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Identify call with wrong data type in lifecycleStageId, ownerId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ email: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 'rudderSample',
+ phone: '9988776655',
+ ownerId: 'rudderSample',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://rudderstack-476952domain3105.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ emails: 'testuser@google.com',
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ work_number: '9988776655',
+ external_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ mobile_number: '1-926-555-9504',
+ created_at: '2022-06-22T10:57:58Z',
+ updated_at: '2022-06-22T10:57:58Z',
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Identify call, email is not provided.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'rudderstack-476952domain3105.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ first_name: 'Rk',
+ last_name: 'Mishra',
+ mobileNumber: '1-926-555-9504',
+ lifecycleStageId: 'rudderSample',
+ phone: '9988776655',
+ owner_id: 'rudderSample',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "email"',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Group call: testing with mock api',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser@google.com',
+ },
+ },
+ traits: {
+ groupType: 'accounts',
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ sales_accounts: [
+ {
+ id: 70003771198,
+ name: 'div-quer',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: true,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ {
+ id: 70003825177,
+ name: 'BisleriGroup',
+ avatar: null,
+ partial: true,
+ website: null,
+ is_primary: false,
+ last_contacted: null,
+ record_type_id: '71010794477',
+ },
+ {
+ id: 70003771396,
+ is_primary: false,
+ },
+ ],
+ },
+ unique_identifier: {
+ emails: 'testuser@google.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Group call: name is required field.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser@google.com',
+ },
+ },
+ traits: {
+ groupType: 'accounts',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "name"',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'missing message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser4google.com',
+ },
+ },
+ traits: {
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Wrong message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'testuser4google.com',
+ },
+ },
+ traits: {
+ name: 'Mark Twain',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Colony',
+ state: 'Haryana',
+ },
+ type: 'page',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type page not supported',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Group call: user email is missing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ message: {
+ messageId: 'sadjb-1e2r3fhgb-12bvbbj',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {},
+ },
+ traits: {
+ groupType: 'accounts',
+ name: 'div-quer',
+ phone: '919191919191',
+ numberOfEmployees: 51,
+ annualRevenue: 1000,
+ address: 'Red Colony',
+ city: 'Lal colony',
+ state: 'Haryana',
+ },
+ type: 'group',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_accounts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ unique_identifier: {
+ name: 'div-quer',
+ },
+ sales_account: {
+ name: 'div-quer',
+ phone: '919191919191',
+ number_of_employees: 51,
+ annual_revenue: 1000,
+ address: '',
+ city: 'Lal colony',
+ state: 'Haryana',
+ created_at: '2022-06-22T10:57:58Z',
+ updated_at: '2022-06-22T10:57:58Z',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Identify call: Email is not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-06-22T10:57:58Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99099',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ traits: {
+ first_name: 'Rk',
+ last_name: 'Narayan',
+ mobileNumber: '1-926-555-9504',
+ phone: '9988776655',
+ },
+ type: 'identify',
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "email"',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call, event is not supported.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ },
+ event: 'Add to Cart',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'event name Add to Cart is not supported. Aborting!',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: some required properties is missing for sales_activity',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "properties.title"',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: for salesActivityName',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-calender',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'test',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ rudderEventsToFreshsalesEvents: [
+ {
+ from: 'test',
+ to: 'sales_activity',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ created_at: '2020-10-20T08:14:28.778Z',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: 70054866612,
+ targetable_type: 'Contact',
+ sales_activity_name: 'own-calender',
+ sales_activity_type_id: 70000666879,
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ userId: '',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: lifecycle_stage_id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton3@gmail.com',
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ lifecycle_stage_id: '71012139273',
+ },
+ unique_identifier: {
+ emails: 'jamessampleton3@gmail.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: In lifecycle stage, email is missing',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email is required for updating life Cycle Stages. Aborting!',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: Either of lifecycleStageName or lifecycleStageId is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either of lifecycleStageName or lifecycleStageId is required. Aborting!',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: Either of sales activity name or sales activity type id is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either of sales activity name or sales activity type id is required. Aborting!',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description:
+ 'Track call: Either of email or targetable_id is required for creating sales activity.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-calender',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Either of email or targetable_id is required for creating sales activity. Aborting!',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: sales activity with salesActivityTypeId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ salesActivityTypeId: '70000663932',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ created_at: '2020-10-20T08:14:28.778Z',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: 70054866612,
+ targetable_type: 'Contact',
+ sales_activity_type_id: '70000663932',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: updated sales activity with salesActivityTypeId and targetableId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ id: '70052305908',
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ salesActivityTypeId: '70000663932',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ sales_activity: {
+ title: 'new Contact',
+ created_at: '2020-10-20T08:14:28.778Z',
+ end_date: '2022-06-04T17:30:00+05:30',
+ owner_id: '70054866612',
+ start_date: '2021-05-04T17:00:00+05:30',
+ updated_at: '2020-10-20T08:14:28.778Z',
+ targetable_id: '70052305908',
+ targetable_type: 'Contact',
+ sales_activity_type_id: '70000663932',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/sales_activities',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Unsupported message Type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ type: 'page',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'jamessampleton3@gmail.com',
+ properties: {
+ lifecycleStageId: '71012139273',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type page not supported',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: with wrong sales activity name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ email: 'test@rudderstack.com',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ externalId: {
+ type: 'Contact',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ email: 'test@rudderstack.com',
+ properties: {
+ product_name: 'Shirt',
+ brand: 'Wrogn',
+ salesActivityName: 'own-list',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ },
+ event: 'sales_activity',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "sales Activity own-list doesn't exists. Aborting!",
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: update contacts with sales Activity name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton6@gmail.com',
+ lifecycleStageName: 'final Customer',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contact: {
+ lifecycle_stage_id: 71012806409,
+ },
+ unique_identifier: {
+ emails: 'jamessampleton6@gmail.com',
+ },
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Token token=dummyApiKey',
+ },
+ version: '1',
+ endpoint: 'https://domain-rudder.myfreshworks.com/crm/sales/api/contacts/upsert',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'freshsales',
+ description: 'Track call: with wrong lifecycleStageName',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.5',
+ },
+ traits: {
+ name: 'Shehan Study',
+ category: 'SampleIdentify',
+ plan: 'Open source',
+ logins: 5,
+ createdAt: 1599264000,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.5',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 0.8999999761581421,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ name: 'some campaign',
+ test: 'other value',
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ type: 'track',
+ messageId: 'dd46338d-5f83-493b-bd28-3b48f55d0be8',
+ originalTimestamp: '2020-10-20T08:14:28.778Z',
+ anonymousId: 'my-anonymous-id-new',
+ userId: 'newUserIdAlias',
+ properties: {
+ email: 'jamessampleton6@gmail.com',
+ lifecycleStageName: 'final ExCustomer',
+ title: 'new Contact',
+ startDate: '2021-05-04T17:00:00+05:30',
+ endDate: '2022-06-04T17:30:00+05:30',
+ ownerId: '70054866612',
+ targetableType: 'Contact',
+ },
+ event: 'lifecycle_stage',
+ previousId: 'sampleusrRudder3',
+ sentAt: '2020-10-20T08:14:28.778Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ domain: 'domain-rudder.myfreshworks.com',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'failed to fetch lifeCycleStages with final ExCustomer',
+ statTags: {
+ destType: 'FRESHSALES',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/freshsales/router/data.ts b/test/integrations/destinations/freshsales/router/data.ts
new file mode 100644
index 00000000000..8548d337b31
--- /dev/null
+++ b/test/integrations/destinations/freshsales/router/data.ts
@@ -0,0 +1,175 @@
+export const data = [
+ {
+ name: 'freshsales',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ context: {
+ device: { name: 'Mi', token: 'dummyDeviceToken' },
+ os: { name: 'android' },
+ traits: {
+ address: {
+ city: 'city',
+ country: 'country',
+ postalCode: 'postalCode',
+ state: 'state',
+ street: 'street',
+ },
+ email: 'user112@mail.com',
+ firstName: 'sample1',
+ lastName: 'user1',
+ },
+ },
+ messageId: '8184ebd7-3a19-45a3-a340-d6f449c63d27',
+ originalTimestamp: '2022-08-30T11:28:48.429+05:30',
+ receivedAt: '2022-08-30T11:28:43.648+05:30',
+ request_ip: '[::1]',
+ rudderId: 'ed33ef22-569d-44b1-a6cb-063c69dca8f0',
+ sentAt: '2022-08-30T11:28:48.429+05:30',
+ timestamp: '2022-08-30T11:28:43.647+05:30',
+ type: 'identify',
+ userId: 'user113',
+ },
+ destination: {
+ ID: '2E3xCNR3sae33y3AkGzuQ3ym05v',
+ Name: 'test',
+ DestinationDefinition: {
+ ID: '2E3x3AwySRvh6vXgYslvYApyFPb',
+ Name: 'FRESHSALES',
+ DisplayName: 'Freshsales',
+ Config: {
+ destConfig: { defaultConfig: ['apiKey', 'domain'] },
+ excludeKeys: [],
+ includeKeys: ['apiKey', 'domain'],
+ saveDestinationResponse: true,
+ supportedMessageTypes: ['identify', 'group'],
+ supportedSourceTypes: [
+ 'amp',
+ 'android',
+ 'cordova',
+ 'cloud',
+ 'flutter',
+ 'ios',
+ 'reactnative',
+ 'unity',
+ 'warehouse',
+ 'web',
+ ],
+ transformAt: 'processor',
+ transformAtV1: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ apiKey: 'hrkjfergeferf',
+ domain: 'rudderstack-479541159204968909.myfreshworks.com',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2E3xCLWeb83vOGDh0mkN4Auei3i',
+ },
+ metadata: { userId: 'u1' },
+ },
+ ],
+ destType: 'freshsales',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://rudderstack-479541159204968909.myfreshworks.com/crm/sales/api/contacts/upsert',
+ headers: {
+ Authorization: 'Token token=hrkjfergeferf',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contact: {
+ emails: 'user112@mail.com',
+ first_name: 'sample1',
+ last_name: 'user1',
+ external_id: 'user113',
+ address: 'street city state country postalCode',
+ city: 'city',
+ state: 'state',
+ country: 'country',
+ zipcode: 'postalCode',
+ created_at: '2022-08-30T11:28:43.647+05:30',
+ updated_at: '2022-08-30T11:28:43.647+05:30',
+ },
+ unique_identifier: { emails: 'user112@mail.com' },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2E3xCNR3sae33y3AkGzuQ3ym05v',
+ Name: 'test',
+ DestinationDefinition: {
+ ID: '2E3x3AwySRvh6vXgYslvYApyFPb',
+ Name: 'FRESHSALES',
+ DisplayName: 'Freshsales',
+ Config: {
+ destConfig: { defaultConfig: ['apiKey', 'domain'] },
+ excludeKeys: [],
+ includeKeys: ['apiKey', 'domain'],
+ saveDestinationResponse: true,
+ supportedMessageTypes: ['identify', 'group'],
+ supportedSourceTypes: [
+ 'amp',
+ 'android',
+ 'cordova',
+ 'cloud',
+ 'flutter',
+ 'ios',
+ 'reactnative',
+ 'unity',
+ 'warehouse',
+ 'web',
+ ],
+ transformAt: 'processor',
+ transformAtV1: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ apiKey: 'hrkjfergeferf',
+ domain: 'rudderstack-479541159204968909.myfreshworks.com',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ RevisionID: '2E3xCLWeb83vOGDh0mkN4Auei3i',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ga/processor/data.ts b/test/integrations/destinations/ga/processor/data.ts
index aa468b50384..43a222e025f 100644
--- a/test/integrations/destinations/ga/processor/data.ts
+++ b/test/integrations/destinations/ga/processor/data.ts
@@ -1,9979 +1,10034 @@
export const mockFns = (_) => {
- // @ts-ignore
- jest
- .useFakeTimers()
- .setSystemTime(new Date('2023-09-29'));
+ // @ts-ignore
+ jest.useFakeTimers().setSystemTime(new Date('2023-09-29'));
};
export const data = [
- {
- "name": "ga",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "externalId": [
- {
- "id": "lynnanderson@smith.net",
- "identifierType": "device_id",
- "type": "AM-users"
- }
- ],
- "mappedToDestination": "true",
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "address": {
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": "",
- "os_version": "test os"
- },
- "ip": "0.0.0.0",
- "age": 26
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/destinations/amplitude",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "https://docs.rudderstack.com/destinations/amplitude",
- "category": "destination",
- "initial_referrer": "https://docs.rudderstack.com",
- "initial_referring_domain": "docs.rudderstack.com"
- }
- },
- "traits": {
- "anonymousId": "123456",
- "email": "test@rudderstack.com",
- "city": "kolkata",
- "address": {
- "country": "India",
- "postalCode": 712136,
- "state": "WB",
- "street": ""
- },
- "os_version": "test os",
- "ip": "0.0.0.0",
- "age": 26,
- "an": "Test App name",
- "ul": "Test ul"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "123456",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "All",
- "ni": 1,
- "ul": "Test ul",
- "an": "Test App name",
- "cm1": "test@rudderstack.com",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "uid": "123456",
- "cid": "123456",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "123456"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Rudder Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Rudder Test",
- "cd1": "Rudder Test",
- "cg2": "Rudder Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "uid": "123456",
- "cid": "00000000000000000000000000",
- "ni": 1,
- "uip": "0.0.0.0",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "q",
- "search": "",
- "title": "a",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "uip": "0.0.0.0",
- "ul": "en-US",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "dr": "q",
- "dt": "a",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event GA3",
- "properties": {
- "category": "test-category",
- "user_actual_role": "system_admin, system_user",
- "user_actual_id": 12345
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ec": "test-category",
- "ni": 1,
- "v": "1",
- "el": "event",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "test track event GA3",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order completed",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "purchase",
- "tr": 99.99,
- "ev": 100,
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "order completed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ni": 1,
- "pr1qt": 1,
- "pr2qt": 3,
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product added",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product added",
- "ec": "cat 1",
- "pa": "add",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ni": 1,
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product removed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product removed",
- "ec": "cat 1",
- "pa": "remove",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product viewed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product viewed",
- "ec": "cat 1",
- "pa": "detail",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product removed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product removed",
- "ec": "cat 1",
- "pa": "remove",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product viewed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product viewed",
- "ec": "cat 1",
- "pa": "detail",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product list filtered",
- "properties": {
- "category": "cat 1",
- "list_id": "1234",
- "filters": [
- {
- "type": "department",
- "value": "beauty"
- },
- {
- "type": "price",
- "value": "under"
- }
- ],
- "sorts": [
- {
- "type": "price",
- "value": "desc"
- }
- ],
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "productDimension": "My Product Dimension",
- "productMetric": "My Product Metric"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product list filtered",
- "ec": "cat 1",
- "pa": "detail",
- "il1pi1id": "507f1f77bcf86cd799439011",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "1234",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "il1pi1qt": 1,
- "il1pi1va": "department:beauty,price:under::price:desc",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product list viewed",
- "properties": {
- "category": "cat 1",
- "list_id": "1234",
- "filters": [
- {
- "type": "department",
- "value": "beauty"
- },
- {
- "type": "price",
- "value": "under"
- }
- ],
- "sorts": [
- {
- "type": "price",
- "value": "desc"
- }
- ],
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "productDimension": "My Product Dimension",
- "productMetric": "My Product Metric",
- "position": 10
- },
- {
- "product_id": "507f1f77bcf86cdef799439011",
- "productDimension": "My Product Dimension1",
- "productMetric": "My Product Metric1",
- "position": -10
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product list viewed",
- "ec": "cat 1",
- "pa": "detail",
- "il1pi1id": "507f1f77bcf86cd799439011",
- "il1pi1ps": 10,
- "il1pi2id": "507f1f77bcf86cdef799439011",
- "il1pi2ps": -10,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "1234",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "il1pi1qt": 1,
- "il1pi1va": "department:beauty,price:under::price:desc",
- "il1pi2qt": 1,
- "il1pi2va": "department:beauty,price:under::price:desc",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 12",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product clicked",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "category": "cat 1",
- "sku": "p-298",
- "list": "search results",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product clicked",
- "ec": "cat 1",
- "pa": "click",
- "pr1cd1": "my product",
- "pr1id": "p-298",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "pal": "search results",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 13",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "promotion viewed",
- "properties": {
- "currency": "CAD",
- "promotion_id": "PROMO_1234",
- "name": "my product",
- "creative": "summer_banner2",
- "position": "banner_slot1",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "promotion viewed",
- "ec": "EnhancedEcommerce",
- "cu": "CAD",
- "promoa": "view",
- "pa": "view",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "promo1id": "PROMO_1234",
- "promo1cr": "summer_banner2",
- "promo1ps": "banner_slot1",
- "promo1nm": "my product",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 14",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "promotion clicked",
- "properties": {
- "currency": "CAD",
- "promotion_id": "PROMO_1234",
- "name": "my product",
- "creative": "summer_banner2",
- "position": "banner_slot1",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "promotion clicked",
- "ec": "EnhancedEcommerce",
- "cu": "CAD",
- "promoa": "promo_click",
- "pa": "promo_click",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "promo1id": "PROMO_1234",
- "promo1cr": "summer_banner2",
- "promo1ps": "banner_slot1",
- "promo1nm": "my product",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 15",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout started",
- "properties": {
- "currency": "CAD",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product 2",
- "sku": "p-299"
- }
- ],
- "step": 1,
- "paymentMethod": "Visa",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "my product 2",
- "pr2nm": "my product 2",
- "pr2pr": 24.75,
- "ea": "checkout started",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cu": "CAD",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "cos": 1,
- "pr1qt": 1,
- "pr2qt": 1,
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 16",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order updated",
- "properties": {
- "currency": "CAD",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product 2",
- "sku": "p-299"
- }
- ],
- "step": 1,
- "paymentMethod": "Visa",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "my product 2",
- "pr2nm": "my product 2",
- "pr2pr": 24.75,
- "ea": "order updated",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cu": "CAD",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "cos": 1,
- "pr1qt": 1,
- "pr2qt": 1,
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 17",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout step viewed",
- "properties": {
- "currency": "CAD",
- "step": 1
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "ea": "checkout step viewed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cos": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 18",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout step completed",
- "properties": {
- "currency": "CAD",
- "step": 1,
- "paymentMethod": "Visa"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout_option",
- "ea": "checkout step completed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cos": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 19",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order refunded",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order refunded",
- "ec": "EnhancedEcommerce",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "pa": "refund",
- "pr1id": "p-298",
- "pr1qt": 1,
- "pr2id": "p-299",
- "ul": "en-US",
- "pr2qt": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 20",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 21",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 22",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 23",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 24",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 25",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "linkid test",
- "properties": {
- "linkid": "abc123",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "linkid": "abc123",
- "cid": "00000000000000000000000000",
- "ea": "linkid test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 26",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 27",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 28",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 29",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.2"
- },
- "traits": {
- "abc": "1234"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.2"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/tests/html/ecomm_test.html",
- "referrer": "http://0.0.0.0:1112/tests/html/",
- "search": "",
- "title": "GA Ecommerce Test",
- "url": "http://0.0.0.0:1112/tests/html/ecomm_test.html"
- }
- },
- "type": "identify",
- "messageId": "bc8a6af8-37fd-46a9-9592-ea29a256435f",
- "originalTimestamp": "2020-06-22T11:30:32.493Z",
- "anonymousId": "38e169a1-3234-46f7-9ceb-c1a6a69005fe",
- "userId": "123",
- "integrations": {
- "All": true
- },
- "sentAt": "2020-06-22T11:30:32.494Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "User Enriched",
- "dt": "GA Ecommerce Test",
- "ec": "All",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.1.2",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "uid": "123",
- "cid": "38e169a1-3234-46f7-9ceb-c1a6a69005fe",
- "ni": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
- "ul": "en-GB",
- "qt": 103120167507
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "38e169a1-3234-46f7-9ceb-c1a6a69005fe"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 30",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 31",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "",
- "search": "?xyz=1",
- "title": "",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc%3Fxyz%3D1",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 32",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "event": "sample event",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "sample event",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 33",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "ev": 100,
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2id": "p-299",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 34",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "ti": "rudderstackorder1",
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 35",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "ti": "rudderstackorder1",
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 36",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 37",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Cart Shared",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "ea": "Cart Shared",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "st": " 1 2",
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 38",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product Shared",
- "properties": {
- "product_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "ea": "Product Shared",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "st": "https://www.example.com/abc",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 39",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "il1pi1id": "1",
- "pr1cd1": "my product",
- "il1pi1nm": "my product",
- "il1pi1pr": 24.75,
- "il1pi2id": "2",
- "pr2cd1": "other product",
- "il1pi2nm": "other product",
- "il1pi2pr": 24.75,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "Sample Product List",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ni": 1,
- "il1pi2qt": 3,
- "il1pi1qt": 1,
- "ul": "en-US",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 40",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "il1pi1id": "p-298",
- "pr1cd1": "my product",
- "il1pi1nm": "my product",
- "il1pi1pr": 24.75,
- "il1pi2id": "p-299",
- "pr2cd1": "other product",
- "il1pi2nm": "other product",
- "il1pi2pr": 24.75,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "Sample Product List",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "il1pi2qt": 3,
- "il1pi1qt": 1,
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 41",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ni": 1,
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "el": "event",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "il1nm": "Sample Product List",
- "uid": "12345",
- "cid": "00000000000000000000000000",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 42",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "ev": 100,
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 43",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "value": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 44",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 45",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "No product information supplied for transaction event",
- "statTags": {
- "destType": "GA",
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 46",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Cart Viewed",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Cart Viewed",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "pa": "detail",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "pr1cd1": "my product",
- "pr1id": "1",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2cd1": "other product",
- "pr2id": "2",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 47",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name1": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "name1": "Test"
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "server side identify is not on",
- "statTags": {
- "destType": "GA",
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 48",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "screen",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "name": "homescreen"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "cd1": "homescreen",
- "v": "1",
- "t": "screenview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cd": "homescreen",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 49",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "newtype",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "name": "homescreen"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "Message type newtype not supported",
- "statTags": {
- "destType": "GA",
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 50",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "827ccb0eea8a706c4c34a16891f84e7b",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 51",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "disableMd5": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 52",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true,
- "GA": {
- "clientId": "clientId"
- },
- "Google Analytics": {
- "clientId": "clientId"
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "clientId",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 53",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "externalId": [
- {
- "id": "externalClientId",
- "type": "gaExternalId"
- }
- ],
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "externalClientId",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 54",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product list viewed",
- "properties": {
- "nonInteraction": 0,
- "category": "cat 1",
- "list_id": "1234",
- "filters": {
- "a": "department",
- "b": "beauty"
- },
- "sorts": [
- {
- "type": "price",
- "value": "desc"
- }
- ],
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "productDimension": "My Product Dimension",
- "productMetric": "My Product Metric",
- "position": 10
- },
- {
- "product_id": "507f1f77bcf86cdef799439011",
- "productDimension": "My Product Dimension1",
- "productMetric": "My Product Metric1",
- "position": -10
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "content1"
- },
- {
- "from": "prop2",
- "to": "content2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ni": 0,
- "ea": "product list viewed",
- "ec": "cat 1",
- "pa": "detail",
- "il1pi1id": "507f1f77bcf86cd799439011",
- "il1pi1va": "::price:desc",
- "il1pi1ps": 10,
- "il1pi1qt": 1,
- "il1pi2id": "507f1f77bcf86cdef799439011",
- "il1pi2va": "::price:desc",
- "il1pi2ps": -10,
- "il1pi2qt": 1,
- "el": "event",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "il1nm": "1234",
- "uid": "12345",
- "cid": "00000000000000000000000000",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "ga",
- "description": "Test 55",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "referrer": "https://google.com/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-tg%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learns-more-about-the-global-site-tag%2Cwhy-is-the-globalthe-head-when-iframe-and-image-tags-were-placed-in-the-body-placed-of-my-site%2Cwhere-can-i-learn-g2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-and-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-n-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag",
- "search": "",
- "title": "a",
- "url": "https://support.google.com/campaignmanager/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjakljshdlfkjahsldkfjahlskdfjhaklsjdfhalksjdhflakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhljkkwoipqpweoirpoqiwerpoqi1111111111111"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "anonymizeIp": false,
- "eventDeliveryTS": 1657516676962,
- "eventFilteringOption": "disable",
- "trackingID": "UA-165994240-1"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "dp": "%2Fcampaignmanager%2Fanswer%2F7554821",
- "dl": "https://support.google.com/campaignmanager/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjakljshdlfkjahsldkfjahlskdfjhaklsjdfhalksjdhflakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhljkkwoipqpweoirpoqiwerpoqi1111111111111",
- "dh": "support.google.com",
- "dt": "a",
- "dr": "https://google.com/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-tg%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learns-more-about-the-global-site-tag%2Cwhy-is-the-globalthe-head-when-iframe-and-image-tags-were-placed-in-the-body-placed-of-my-site%2Cwhere-can-i-learn-g2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-and-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-n-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag",
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "cid": "00000000000000000000000000",
- "uip": "0.0.0.0",
- "qt": 124893881701
- },
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-].map((d) => ({ ...d, mockFns }))
\ No newline at end of file
+ {
+ name: 'ga',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'device_id',
+ type: 'AM-users',
+ },
+ ],
+ mappedToDestination: 'true',
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ os_version: 'test os',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/destinations/amplitude',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'https://docs.rudderstack.com/destinations/amplitude',
+ category: 'destination',
+ initial_referrer: 'https://docs.rudderstack.com',
+ initial_referring_domain: 'docs.rudderstack.com',
+ },
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ city: 'kolkata',
+ address: {
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ os_version: 'test os',
+ ip: '0.0.0.0',
+ age: 26,
+ an: 'Test App name',
+ ul: 'Test ul',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'name',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'All',
+ ni: 1,
+ ul: 'Test ul',
+ an: 'Test App name',
+ cm1: 'test@rudderstack.com',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ uid: '123456',
+ cid: '123456',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '123456',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Rudder Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'name',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Rudder Test',
+ cd1: 'Rudder Test',
+ cg2: 'Rudder Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ uid: '123456',
+ cid: '00000000000000000000000000',
+ ni: 1,
+ uip: '0.0.0.0',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: 'q',
+ search: '',
+ title: 'a',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ uip: '0.0.0.0',
+ ul: 'en-US',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ dr: 'q',
+ dt: 'a',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event GA3',
+ properties: {
+ category: 'test-category',
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ec: 'test-category',
+ ni: 1,
+ v: '1',
+ el: 'event',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'test track event GA3',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order completed',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'purchase',
+ tr: 99.99,
+ ev: 100,
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'order completed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ni: 1,
+ pr1qt: 1,
+ pr2qt: 3,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product added',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product added',
+ ec: 'cat 1',
+ pa: 'add',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ni: 1,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product removed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product removed',
+ ec: 'cat 1',
+ pa: 'remove',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product viewed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product removed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product removed',
+ ec: 'cat 1',
+ pa: 'remove',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product viewed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product list filtered',
+ properties: {
+ category: 'cat 1',
+ list_id: '1234',
+ filters: [
+ {
+ type: 'department',
+ value: 'beauty',
+ },
+ {
+ type: 'price',
+ value: 'under',
+ },
+ ],
+ sorts: [
+ {
+ type: 'price',
+ value: 'desc',
+ },
+ ],
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ productDimension: 'My Product Dimension',
+ productMetric: 'My Product Metric',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product list filtered',
+ ec: 'cat 1',
+ pa: 'detail',
+ il1pi1id: '507f1f77bcf86cd799439011',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: '1234',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ il1pi1qt: 1,
+ il1pi1va: 'department:beauty,price:under::price:desc',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product list viewed',
+ properties: {
+ category: 'cat 1',
+ list_id: '1234',
+ filters: [
+ {
+ type: 'department',
+ value: 'beauty',
+ },
+ {
+ type: 'price',
+ value: 'under',
+ },
+ ],
+ sorts: [
+ {
+ type: 'price',
+ value: 'desc',
+ },
+ ],
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ productDimension: 'My Product Dimension',
+ productMetric: 'My Product Metric',
+ position: 10,
+ },
+ {
+ product_id: '507f1f77bcf86cdef799439011',
+ productDimension: 'My Product Dimension1',
+ productMetric: 'My Product Metric1',
+ position: -10,
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product list viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ il1pi1id: '507f1f77bcf86cd799439011',
+ il1pi1ps: 10,
+ il1pi2id: '507f1f77bcf86cdef799439011',
+ il1pi2ps: -10,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: '1234',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ il1pi1qt: 1,
+ il1pi1va: 'department:beauty,price:under::price:desc',
+ il1pi2qt: 1,
+ il1pi2va: 'department:beauty,price:under::price:desc',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product clicked',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ category: 'cat 1',
+ sku: 'p-298',
+ list: 'search results',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product clicked',
+ ec: 'cat 1',
+ pa: 'click',
+ pr1cd1: 'my product',
+ pr1id: 'p-298',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ pal: 'search results',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'promotion viewed',
+ properties: {
+ currency: 'CAD',
+ promotion_id: 'PROMO_1234',
+ name: 'my product',
+ creative: 'summer_banner2',
+ position: 'banner_slot1',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'promotion viewed',
+ ec: 'EnhancedEcommerce',
+ cu: 'CAD',
+ promoa: 'view',
+ pa: 'view',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ promo1id: 'PROMO_1234',
+ promo1cr: 'summer_banner2',
+ promo1ps: 'banner_slot1',
+ promo1nm: 'my product',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'promotion clicked',
+ properties: {
+ currency: 'CAD',
+ promotion_id: 'PROMO_1234',
+ name: 'my product',
+ creative: 'summer_banner2',
+ position: 'banner_slot1',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'promotion clicked',
+ ec: 'EnhancedEcommerce',
+ cu: 'CAD',
+ promoa: 'promo_click',
+ pa: 'promo_click',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ promo1id: 'PROMO_1234',
+ promo1cr: 'summer_banner2',
+ promo1ps: 'banner_slot1',
+ promo1nm: 'my product',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout started',
+ properties: {
+ currency: 'CAD',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 2',
+ sku: 'p-299',
+ },
+ ],
+ step: 1,
+ paymentMethod: 'Visa',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'my product 2',
+ pr2nm: 'my product 2',
+ pr2pr: 24.75,
+ ea: 'checkout started',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cu: 'CAD',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ cos: 1,
+ pr1qt: 1,
+ pr2qt: 1,
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order updated',
+ properties: {
+ currency: 'CAD',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 2',
+ sku: 'p-299',
+ },
+ ],
+ step: 1,
+ paymentMethod: 'Visa',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'my product 2',
+ pr2nm: 'my product 2',
+ pr2pr: 24.75,
+ ea: 'order updated',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cu: 'CAD',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ cos: 1,
+ pr1qt: 1,
+ pr2qt: 1,
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout step viewed',
+ properties: {
+ currency: 'CAD',
+ step: 1,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ ea: 'checkout step viewed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cos: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout step completed',
+ properties: {
+ currency: 'CAD',
+ step: 1,
+ paymentMethod: 'Visa',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout_option',
+ ea: 'checkout step completed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cos: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order refunded',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order refunded',
+ ec: 'EnhancedEcommerce',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ pa: 'refund',
+ pr1id: 'p-298',
+ pr1qt: 1,
+ pr2id: 'p-299',
+ ul: 'en-US',
+ pr2qt: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 23',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 24',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 25',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'linkid test',
+ properties: {
+ linkid: 'abc123',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ linkid: 'abc123',
+ cid: '00000000000000000000000000',
+ ea: 'linkid test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 26',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 27',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 28',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 29',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.2',
+ },
+ traits: {
+ abc: '1234',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.2',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/tests/html/ecomm_test.html',
+ referrer: 'http://0.0.0.0:1112/tests/html/',
+ search: '',
+ title: 'GA Ecommerce Test',
+ url: 'http://0.0.0.0:1112/tests/html/ecomm_test.html',
+ },
+ },
+ type: 'identify',
+ messageId: 'bc8a6af8-37fd-46a9-9592-ea29a256435f',
+ originalTimestamp: '2020-06-22T11:30:32.493Z',
+ anonymousId: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ userId: '123',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2020-06-22T11:30:32.494Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'User Enriched',
+ dt: 'GA Ecommerce Test',
+ ec: 'All',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.1.2',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ uid: '123',
+ cid: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ ni: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+ ul: 'en-GB',
+ qt: 103120167507,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 30',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 31',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: '',
+ search: '?xyz=1',
+ title: '',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc%3Fxyz%3D1',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 32',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ event: 'sample event',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'sample event',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 33',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ ev: 100,
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2id: 'p-299',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 34',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ ti: 'rudderstackorder1',
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 35',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ ti: 'rudderstackorder1',
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 36',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 37',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Cart Shared',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ ea: 'Cart Shared',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ st: ' 1 2',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 38',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product Shared',
+ properties: {
+ product_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ ea: 'Product Shared',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ st: 'https://www.example.com/abc',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 39',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ il1pi1id: '1',
+ pr1cd1: 'my product',
+ il1pi1nm: 'my product',
+ il1pi1pr: 24.75,
+ il1pi2id: '2',
+ pr2cd1: 'other product',
+ il1pi2nm: 'other product',
+ il1pi2pr: 24.75,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: 'Sample Product List',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ni: 1,
+ il1pi2qt: 3,
+ il1pi1qt: 1,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 40',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ il1pi1id: 'p-298',
+ pr1cd1: 'my product',
+ il1pi1nm: 'my product',
+ il1pi1pr: 24.75,
+ il1pi2id: 'p-299',
+ pr2cd1: 'other product',
+ il1pi2nm: 'other product',
+ il1pi2pr: 24.75,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: 'Sample Product List',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ il1pi2qt: 3,
+ il1pi1qt: 1,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 41',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ni: 1,
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ el: 'event',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ il1nm: 'Sample Product List',
+ uid: '12345',
+ cid: '00000000000000000000000000',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 42',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ ev: 100,
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 43',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ value: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 44',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 45',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No product information supplied for transaction event',
+ statTags: {
+ destType: 'GA',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 46',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Cart Viewed',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Cart Viewed',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ pa: 'detail',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ pr1cd1: 'my product',
+ pr1id: '1',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2cd1: 'other product',
+ pr2id: '2',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 47',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name1: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ traits: {
+ name1: 'Test',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'server side identify is not on',
+ statTags: {
+ destType: 'GA',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 48',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'screen',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ name: 'homescreen',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ cd1: 'homescreen',
+ v: '1',
+ t: 'screenview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cd: 'homescreen',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 49',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'newtype',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ name: 'homescreen',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message type newtype not supported',
+ statTags: {
+ destType: 'GA',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 50',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: '827ccb0eea8a706c4c34a16891f84e7b',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 51',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ disableMd5: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 52',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ GA: {
+ clientId: 'clientId',
+ },
+ 'Google Analytics': {
+ clientId: 'clientId',
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: 'clientId',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 53',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'externalClientId',
+ type: 'gaExternalId',
+ },
+ ],
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: 'externalClientId',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 54',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product list viewed',
+ properties: {
+ nonInteraction: 0,
+ category: 'cat 1',
+ list_id: '1234',
+ filters: {
+ a: 'department',
+ b: 'beauty',
+ },
+ sorts: [
+ {
+ type: 'price',
+ value: 'desc',
+ },
+ ],
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ productDimension: 'My Product Dimension',
+ productMetric: 'My Product Metric',
+ position: 10,
+ },
+ {
+ product_id: '507f1f77bcf86cdef799439011',
+ productDimension: 'My Product Dimension1',
+ productMetric: 'My Product Metric1',
+ position: -10,
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'content1',
+ },
+ {
+ from: 'prop2',
+ to: 'content2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ni: 0,
+ ea: 'product list viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ il1pi1id: '507f1f77bcf86cd799439011',
+ il1pi1va: '::price:desc',
+ il1pi1ps: 10,
+ il1pi1qt: 1,
+ il1pi2id: '507f1f77bcf86cdef799439011',
+ il1pi2va: '::price:desc',
+ il1pi2ps: -10,
+ il1pi2qt: 1,
+ el: 'event',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ il1nm: '1234',
+ uid: '12345',
+ cid: '00000000000000000000000000',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga',
+ description: 'Test 55',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ referrer:
+ 'https://google.com/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-tg%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learns-more-about-the-global-site-tag%2Cwhy-is-the-globalthe-head-when-iframe-and-image-tags-were-placed-in-the-body-placed-of-my-site%2Cwhere-can-i-learn-g2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-and-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-n-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag',
+ search: '',
+ title: 'a',
+ url: 'https://support.google.com/campaignmanager/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjakljshdlfkjahsldkfjahlskdfjhaklsjdfhalksjdhflakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhljkkwoipqpweoirpoqiwerpoqi1111111111111',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ anonymizeIp: false,
+ eventDeliveryTS: 1657516676962,
+ eventFilteringOption: 'disable',
+ trackingID: 'UA-165994240-1',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ dp: '%2Fcampaignmanager%2Fanswer%2F7554821',
+ dl: 'https://support.google.com/campaignmanager/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjis-the-global-site-tag-placed-in-the-head-lakjsdlkfjalsdkfjakljshdlfkjahsldkfjahlskdfjhaklsjdfhalksjdhflakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhlakjshdflakjsdhfklasjhdflaksjhdflaksjdfhljkkwoipqpweoirpoqiwerpoqi1111111111111',
+ dh: 'support.google.com',
+ dt: 'a',
+ dr: 'https://google.com/answer/7554821?zippy=%2Cfields-in-event-snippets-for-counter-tags%2Cstep-add-the-global-snippet-to-every-page-of-your-site%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cstep-add-the-event-snippet-to-pages-with-events-youre-tracking%2Cfields-in-the-global-snippet%2Cfields-in-the-event-snippet---overview%2Cfields-in-all-event-snippets%2Cexample-event-snippet-for-counter---standard-activities%2Cexample-event-snippet-for-counter---unique-activities%2Cexample-event-snippet-for-counter---per-session-activities%2Cfields-in-event-snippets-for-sales-tags%2Cexample-event-snippet-for-sales---transaction-activities%2Cexample-event-snippet-for-sales---items-sold-activities%2Ccustom-fields%2Cnoscript-section-of-event-snippets%2Cdo-i-need-to-set-up-cache-busting-with-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-tg%2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learns-more-about-the-global-site-tag%2Cwhy-is-the-globalthe-head-when-iframe-and-image-tags-were-placed-in-the-body-placed-of-my-site%2Cwhere-can-i-learn-g2Cwhy-is-the-global-site-tag-placed-in-the-head-when-iframe-and-and-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag%2Cwhy-n-the-head-when-iframe-and-image-tags-were-placed-in-the-body-of-my-site%2Cwhere-can-i-learn-more-about-the-global-site-tag',
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ cid: '00000000000000000000000000',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+].map((d) => ({ ...d, mockFns }));
diff --git a/test/integrations/destinations/ga/router/data.ts b/test/integrations/destinations/ga/router/data.ts
index f0c2b86377d..912d5490e7f 100644
--- a/test/integrations/destinations/ga/router/data.ts
+++ b/test/integrations/destinations/ga/router/data.ts
@@ -1,487 +1,350 @@
export const mockFns = (_) => {
- // @ts-ignore
- jest
- .useFakeTimers()
- .setSystemTime(new Date('2023-09-29'));
+ // @ts-ignore
+ jest.useFakeTimers().setSystemTime(new Date('2023-09-29'));
};
export const data = [
- {
- name: 'ga',
- description: 'Test 0',
- feature: 'router',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- input: [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Rudder Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "q",
- "search": "",
- "title": "a",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ],
- destType: 'ga',
+ {
+ name: 'ga',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: { name: 'Rudder Test' },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
- method: 'POST',
+ properties: { plan: 'standard plan', name: 'rudder test' },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'name', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: { email: 'test@rudderstack.com' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: 'q',
+ search: '',
+ title: 'a',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: { All: true },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'prop2', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
},
+ ],
+ destType: 'ga',
},
- output: {
- response: {
- status: 200,
- body: {
- output: [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Rudder Test",
- "cd1": "Rudder Test",
- "cg2": "Rudder Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "uid": "123456",
- "cid": "00000000000000000000000000",
- "ni": 1,
- "uip": "0.0.0.0",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "uip": "0.0.0.0",
- "ul": "en-US",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "dr": "q",
- "dt": "a",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Rudder Test',
+ cd1: 'Rudder Test',
+ cg2: 'Rudder Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ uid: '123456',
+ cid: '00000000000000000000000000',
+ ni: 1,
+ uip: '0.0.0.0',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ qt: 124893881701,
+ },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'name', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ uip: '0.0.0.0',
+ ul: 'en-US',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ dr: 'q',
+ dt: 'a',
+ qt: 124893881701,
+ },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'prop2', to: 'contentGroup2' },
+ ],
},
+ Enabled: true,
+ },
},
+ ],
},
- }
+ },
+ },
+ },
].map((d) => ({ ...d, mockFns }));
diff --git a/test/integrations/destinations/ga360/processor/data.ts b/test/integrations/destinations/ga360/processor/data.ts
index 4ed196d8c56..40b3495062d 100644
--- a/test/integrations/destinations/ga360/processor/data.ts
+++ b/test/integrations/destinations/ga360/processor/data.ts
@@ -1,9456 +1,9507 @@
export const mockFns = (_) => {
- // @ts-ignore
- jest
- .useFakeTimers()
- .setSystemTime(new Date('2023-09-29'));
+ // @ts-ignore
+ jest.useFakeTimers().setSystemTime(new Date('2023-09-29'));
};
export const data = [
- {
- "name": "ga360",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Rudder Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Rudder Test",
- "cd1": "Rudder Test",
- "cg2": "Rudder Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "uid": "123456",
- "cid": "00000000000000000000000000",
- "ni": 1,
- "uip": "0.0.0.0",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ {
+ name: 'ga360',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Rudder Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'name',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "q",
- "search": "",
- "title": "a",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "uip": "0.0.0.0",
- "ul": "en-US",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "dr": "q",
- "dt": "a",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Rudder Test',
+ cd1: 'Rudder Test',
+ cg2: 'Rudder Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ uid: '123456',
+ cid: '00000000000000000000000000',
+ ni: 1,
+ uip: '0.0.0.0',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "test track event GA3",
- "properties": {
- "category": "test-category",
- "user_actual_role": "system_admin, system_user",
- "user_actual_id": 12345
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ec": "test-category",
- "ni": 1,
- "v": "1",
- "el": "event",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "test track event GA3",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: 'q',
+ search: '',
+ title: 'a',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order completed",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "purchase",
- "tr": 99.99,
- "ev": 100,
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "order completed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ni": 1,
- "pr1qt": 1,
- "pr2qt": 3,
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ uip: '0.0.0.0',
+ ul: 'en-US',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ dr: 'q',
+ dt: 'a',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product added",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product added",
- "ec": "cat 1",
- "pa": "add",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ni": 1,
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event GA3',
+ properties: {
+ category: 'test-category',
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product removed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product removed",
- "ec": "cat 1",
- "pa": "remove",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ec: 'test-category',
+ ni: 1,
+ v: '1',
+ el: 'event',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'test track event GA3',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product viewed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product viewed",
- "ec": "cat 1",
- "pa": "detail",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order completed',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product removed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product removed",
- "ec": "cat 1",
- "pa": "remove",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'purchase',
+ tr: 99.99,
+ ev: 100,
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'order completed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ni: 1,
+ pr1qt: 1,
+ pr2qt: 3,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product viewed",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product 1",
- "category": "cat 1",
- "sku": "p-298",
- "testDimension": true,
- "testMetric": true,
- "position": 4.5
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product viewed",
- "ec": "cat 1",
- "pa": "detail",
- "pr1cd1": "my product 1",
- "pr1id": "p-298",
- "cd1": "my product 1",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product 1",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1ps": 4.5,
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product added',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product list filtered",
- "properties": {
- "category": "cat 1",
- "list_id": "1234",
- "filters": [
- {
- "type": "department",
- "value": "beauty"
- },
- {
- "type": "price",
- "value": "under"
- }
- ],
- "sorts": [
- {
- "type": "price",
- "value": "desc"
- }
- ],
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "productDimension": "My Product Dimension",
- "productMetric": "My Product Metric"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product list filtered",
- "ec": "cat 1",
- "pa": "detail",
- "il1pi1id": "507f1f77bcf86cd799439011",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "1234",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "il1pi1qt": 1,
- "il1pi1va": "department:beauty,price:under::price:desc",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product added',
+ ec: 'cat 1',
+ pa: 'add',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ni: 1,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product list viewed",
- "properties": {
- "category": "cat 1",
- "list_id": "1234",
- "filters": [
- {
- "type": "department",
- "value": "beauty"
- },
- {
- "type": "price",
- "value": "under"
- }
- ],
- "sorts": [
- {
- "type": "price",
- "value": "desc"
- }
- ],
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "productDimension": "My Product Dimension",
- "productMetric": "My Product Metric",
- "position": 10
- },
- {
- "product_id": "507f1f77bcf86cdef799439011",
- "productDimension": "My Product Dimension1",
- "productMetric": "My Product Metric1",
- "position": -10
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product list viewed",
- "ec": "cat 1",
- "pa": "detail",
- "il1pi1id": "507f1f77bcf86cd799439011",
- "il1pi1ps": 10,
- "il1pi2id": "507f1f77bcf86cdef799439011",
- "il1pi2ps": -10,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "1234",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "il1pi1qt": 1,
- "il1pi1va": "department:beauty,price:under::price:desc",
- "il1pi2qt": 1,
- "il1pi2va": "department:beauty,price:under::price:desc",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product removed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "product clicked",
- "properties": {
- "currency": "CAD",
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "category": "cat 1",
- "sku": "p-298",
- "list": "search results",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "product clicked",
- "ec": "cat 1",
- "pa": "click",
- "pr1cd1": "my product",
- "pr1id": "p-298",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "pr1nm": "my product",
- "pr1ca": "cat 1",
- "cu": "CAD",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "pal": "search results",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product removed',
+ ec: 'cat 1',
+ pa: 'remove',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 12",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "promotion viewed",
- "properties": {
- "currency": "CAD",
- "promotion_id": "PROMO_1234",
- "name": "my product",
- "creative": "summer_banner2",
- "position": "banner_slot1",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "promotion viewed",
- "ec": "EnhancedEcommerce",
- "cu": "CAD",
- "promoa": "view",
- "pa": "view",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "promo1id": "PROMO_1234",
- "promo1cr": "summer_banner2",
- "promo1ps": "banner_slot1",
- "promo1nm": "my product",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product viewed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 13",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "promotion clicked",
- "properties": {
- "currency": "CAD",
- "promotion_id": "PROMO_1234",
- "name": "my product",
- "creative": "summer_banner2",
- "position": "banner_slot1",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "promotion clicked",
- "ec": "EnhancedEcommerce",
- "cu": "CAD",
- "promoa": "promo_click",
- "pa": "promo_click",
- "cd1": "my product",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "promo1id": "PROMO_1234",
- "promo1cr": "summer_banner2",
- "promo1ps": "banner_slot1",
- "promo1nm": "my product",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 14",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout started",
- "properties": {
- "currency": "CAD",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product 2",
- "sku": "p-299"
- }
- ],
- "step": 1,
- "paymentMethod": "Visa",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "my product 2",
- "pr2nm": "my product 2",
- "pr2pr": 24.75,
- "ea": "checkout started",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cu": "CAD",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "cos": 1,
- "pr1qt": 1,
- "pr2qt": 1,
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product removed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 15",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order updated",
- "properties": {
- "currency": "CAD",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product 2",
- "sku": "p-299"
- }
- ],
- "step": 1,
- "paymentMethod": "Visa",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "p-299",
- "pr2cd1": "my product 2",
- "pr2nm": "my product 2",
- "pr2pr": 24.75,
- "ea": "order updated",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cu": "CAD",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "cos": 1,
- "pr1qt": 1,
- "pr2qt": 1,
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product removed',
+ ec: 'cat 1',
+ pa: 'remove',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 16",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout step viewed",
- "properties": {
- "currency": "CAD",
- "step": 1
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout",
- "ea": "checkout step viewed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cos": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product viewed',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 1',
+ category: 'cat 1',
+ sku: 'p-298',
+ testDimension: true,
+ testMetric: true,
+ position: 4.5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 17",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "checkout step completed",
- "properties": {
- "currency": "CAD",
- "step": 1,
- "paymentMethod": "Visa"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "checkout_option",
- "ea": "checkout step completed",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cos": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ pr1cd1: 'my product 1',
+ pr1id: 'p-298',
+ cd1: 'my product 1',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product 1',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1ps: 4.5,
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 18",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order refunded",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order refunded",
- "ec": "EnhancedEcommerce",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "pa": "refund",
- "pr1id": "p-298",
- "pr1qt": 1,
- "pr2id": "p-299",
- "ul": "en-US",
- "pr2qt": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product list filtered',
+ properties: {
+ category: 'cat 1',
+ list_id: '1234',
+ filters: [
+ {
+ type: 'department',
+ value: 'beauty',
+ },
+ {
+ type: 'price',
+ value: 'under',
+ },
+ ],
+ sorts: [
+ {
+ type: 'price',
+ value: 'desc',
+ },
+ ],
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ productDimension: 'My Product Dimension',
+ productMetric: 'My Product Metric',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 19",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product list filtered',
+ ec: 'cat 1',
+ pa: 'detail',
+ il1pi1id: '507f1f77bcf86cd799439011',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: '1234',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ il1pi1qt: 1,
+ il1pi1va: 'department:beauty,price:under::price:desc',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 20",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product list viewed',
+ properties: {
+ category: 'cat 1',
+ list_id: '1234',
+ filters: [
+ {
+ type: 'department',
+ value: 'beauty',
+ },
+ {
+ type: 'price',
+ value: 'under',
+ },
+ ],
+ sorts: [
+ {
+ type: 'price',
+ value: 'desc',
+ },
+ ],
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ productDimension: 'My Product Dimension',
+ productMetric: 'My Product Metric',
+ position: 10,
+ },
+ {
+ product_id: '507f1f77bcf86cdef799439011',
+ productDimension: 'My Product Dimension1',
+ productMetric: 'My Product Metric1',
+ position: -10,
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 21",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product list viewed',
+ ec: 'cat 1',
+ pa: 'detail',
+ il1pi1id: '507f1f77bcf86cd799439011',
+ il1pi1ps: 10,
+ il1pi2id: '507f1f77bcf86cdef799439011',
+ il1pi2ps: -10,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: '1234',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ il1pi1qt: 1,
+ il1pi1va: 'department:beauty,price:under::price:desc',
+ il1pi2qt: 1,
+ il1pi2va: 'department:beauty,price:under::price:desc',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 22",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'product clicked',
+ properties: {
+ currency: 'CAD',
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ category: 'cat 1',
+ sku: 'p-298',
+ list: 'search results',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 23",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "order starterefundedd",
- "properties": {
- "products": [
- {
- "quantity": 1,
- "sku": "p-298"
- },
- {
- "quantity": 1,
- "sku": "p-299"
- }
- ],
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "order starterefundedd",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'product clicked',
+ ec: 'cat 1',
+ pa: 'click',
+ pr1cd1: 'my product',
+ pr1id: 'p-298',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ pr1nm: 'my product',
+ pr1ca: 'cat 1',
+ cu: 'CAD',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ pal: 'search results',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 24",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "linkid test",
- "properties": {
- "linkid": "abc123",
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "linkid": "abc123",
- "cid": "00000000000000000000000000",
- "ea": "linkid test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'promotion viewed',
+ properties: {
+ currency: 'CAD',
+ promotion_id: 'PROMO_1234',
+ name: 'my product',
+ creative: 'summer_banner2',
+ position: 'banner_slot1',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 25",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'promotion viewed',
+ ec: 'EnhancedEcommerce',
+ cu: 'CAD',
+ promoa: 'view',
+ pa: 'view',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ promo1id: 'PROMO_1234',
+ promo1cr: 'summer_banner2',
+ promo1ps: 'banner_slot1',
+ promo1nm: 'my product',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 26",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'promotion clicked',
+ properties: {
+ currency: 'CAD',
+ promotion_id: 'PROMO_1234',
+ name: 'my product',
+ creative: 'summer_banner2',
+ position: 'banner_slot1',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 27",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "campaign": {
- "name": "sampleName",
- "source": "sampleSource",
- "medium": "sampleMedium",
- "content": "sampleContent",
- "term": "sampleTerm"
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "event": "campaign test",
- "properties": {
- "testDimension": true,
- "testMetric": true
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ul": "en-US",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "cn": "sampleName",
- "cs": "sampleSource",
- "cm": "sampleMedium",
- "cc": "sampleContent",
- "ck": "sampleTerm",
- "cid": "00000000000000000000000000",
- "ea": "campaign test",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'promotion clicked',
+ ec: 'EnhancedEcommerce',
+ cu: 'CAD',
+ promoa: 'promo_click',
+ pa: 'promo_click',
+ cd1: 'my product',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ promo1id: 'PROMO_1234',
+ promo1cr: 'summer_banner2',
+ promo1ps: 'banner_slot1',
+ promo1nm: 'my product',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 28",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.2"
- },
- "traits": {
- "abc": "1234"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.2"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- },
- "page": {
- "path": "/tests/html/ecomm_test.html",
- "referrer": "http://0.0.0.0:1112/tests/html/",
- "search": "",
- "title": "GA Ecommerce Test",
- "url": "http://0.0.0.0:1112/tests/html/ecomm_test.html"
- }
- },
- "type": "identify",
- "messageId": "bc8a6af8-37fd-46a9-9592-ea29a256435f",
- "originalTimestamp": "2020-06-22T11:30:32.493Z",
- "anonymousId": "38e169a1-3234-46f7-9ceb-c1a6a69005fe",
- "userId": "123",
- "integrations": {
- "All": true
- },
- "sentAt": "2020-06-22T11:30:32.494Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "User Enriched",
- "dt": "GA Ecommerce Test",
- "ec": "All",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.1.2",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "uid": "123",
- "cid": "38e169a1-3234-46f7-9ceb-c1a6a69005fe",
- "ni": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36",
- "ul": "en-GB",
- "qt": 103120167507,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "38e169a1-3234-46f7-9ceb-c1a6a69005fe"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout started',
+ properties: {
+ currency: 'CAD',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 2',
+ sku: 'p-299',
+ },
+ ],
+ step: 1,
+ paymentMethod: 'Visa',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 29",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'my product 2',
+ pr2nm: 'my product 2',
+ pr2pr: 24.75,
+ ea: 'checkout started',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cu: 'CAD',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ cos: 1,
+ pr1qt: 1,
+ pr2qt: 1,
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 30",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "",
- "search": "?xyz=1",
- "title": "",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc%3Fxyz%3D1",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order updated',
+ properties: {
+ currency: 'CAD',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product 2',
+ sku: 'p-299',
+ },
+ ],
+ step: 1,
+ paymentMethod: 'Visa',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 31",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "event": "sample event",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ea": "sample event",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: 'p-299',
+ pr2cd1: 'my product 2',
+ pr2nm: 'my product 2',
+ pr2pr: 24.75,
+ ea: 'order updated',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cu: 'CAD',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ cos: 1,
+ pr1qt: 1,
+ pr2qt: 1,
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 32",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "ev": 100,
- "pr1id": "p-298",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2id": "p-299",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout step viewed',
+ properties: {
+ currency: 'CAD',
+ step: 1,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 33",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "ti": "rudderstackorder1",
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout',
+ ea: 'checkout step viewed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cos: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 34",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "ti": "rudderstackorder1",
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'checkout step completed',
+ properties: {
+ currency: 'CAD',
+ step: 1,
+ paymentMethod: 'Visa',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 35",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Refunded",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "pa": "refund",
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "ea": "Order Refunded",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'checkout_option',
+ ea: 'checkout step completed',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cos: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 36",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Cart Shared",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "ea": "Cart Shared",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "st": " 1 2",
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order refunded',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 37",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product Shared",
- "properties": {
- "product_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ev": 100,
- "ea": "Product Shared",
- "ec": "All",
- "ni": 1,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "st": "https://www.example.com/abc",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order refunded',
+ ec: 'EnhancedEcommerce',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ pa: 'refund',
+ pr1id: 'p-298',
+ pr1qt: 1,
+ pr2id: 'p-299',
+ ul: 'en-US',
+ pr2qt: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 38",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "il1pi1id": "1",
- "pr1cd1": "my product",
- "il1pi1nm": "my product",
- "il1pi1pr": 24.75,
- "il1pi2id": "2",
- "pr2cd1": "other product",
- "il1pi2nm": "other product",
- "il1pi2pr": 24.75,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "Sample Product List",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ni": 1,
- "il1pi2qt": 3,
- "il1pi1qt": 1,
- "ul": "en-US",
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 39",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "il1pi1id": "p-298",
- "pr1cd1": "my product",
- "il1pi1nm": "my product",
- "il1pi1pr": 24.75,
- "il1pi2id": "p-299",
- "pr2cd1": "other product",
- "il1pi2nm": "other product",
- "il1pi2pr": 24.75,
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "il1nm": "Sample Product List",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "il1pi2qt": 3,
- "il1pi1qt": 1,
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 40",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ni": 1,
- "ea": "Product List Clicked",
- "ec": "Sample Product List",
- "pa": "click",
- "el": "event",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "il1nm": "Sample Product List",
- "uid": "12345",
- "cid": "00000000000000000000000000",
- "qt": 124893881700
- },
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 41",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "total": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "ev": 100,
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 42",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "value": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 43",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "pa": "refund",
- "tr": 99.99,
- "pr1id": "1",
- "pr1cd1": "my product",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr2id": "2",
- "pr2cd1": "other product",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "ea": "Order Cancelled",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ti": "rudderstackorder1",
- "ts": 13.99,
- "tt": 20.99,
- "cu": "INR",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "pr1qt": 1,
- "pr2qt": 3,
- "ni": 1,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 44",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Order Cancelled",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "No product information supplied for transaction event",
- "statTags": {
- "destType": "GA360",
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 45",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Cart Viewed",
- "properties": {
- "order_id": "rudderstackorder1",
- "revenue": 99.99,
- "shipping": 13.99,
- "tax": 20.99,
- "currency": "INR",
- "products": [
- {
- "quantity": 1,
- "price": 24.75,
- "name": "my product",
- "sku": "p-298",
- "product_id": "1"
- },
- {
- "quantity": 3,
- "price": 24.75,
- "name": "other product",
- "sku": "p-299",
- "product_id": "2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "Cart Viewed",
- "ev": 100,
- "ec": "EnhancedEcommerce",
- "pa": "detail",
- "v": "1",
- "t": "event",
- "el": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "cid": "00000000000000000000000000",
- "uid": "12345",
- "ul": "en-US",
- "ni": 1,
- "pr1cd1": "my product",
- "pr1id": "1",
- "pr1nm": "my product",
- "pr1pr": 24.75,
- "pr1qt": 1,
- "pr2cd1": "other product",
- "pr2id": "2",
- "pr2nm": "other product",
- "pr2pr": 24.75,
- "pr2qt": 3,
- "qt": 124893881700,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 46",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name1": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "traits": {
- "name1": "Test"
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "server side identify is not on",
- "statTags": {
- "destType": "GA360",
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 23',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'order starterefundedd',
+ properties: {
+ products: [
+ {
+ quantity: 1,
+ sku: 'p-298',
+ },
+ {
+ quantity: 1,
+ sku: 'p-299',
+ },
+ ],
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 47",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "screen",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "name": "homescreen"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "cd1": "homescreen",
- "v": "1",
- "t": "screenview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "cd": "homescreen",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "ul": "en-US",
- "uip": "0.0.0.0",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'order starterefundedd',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 48",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "newtype",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "name": "homescreen"
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "error": "Message type newtype not supported",
- "statTags": {
- "destType": "GA360",
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "feature": "processor",
- "implementation": "native",
- "module": "destination"
- },
- "statusCode": 400
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 24',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'linkid test',
+ properties: {
+ linkid: 'abc123',
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 49",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "827ccb0eea8a706c4c34a16891f84e7b",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ linkid: 'abc123',
+ cid: '00000000000000000000000000',
+ ea: 'linkid test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 50",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "disableMd5": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'ga360',
+ description: 'Test 25',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 51",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true,
- "GA": {
- "clientId": "clientId"
- },
- "Google Analytics": {
- "clientId": "clientId"
- }
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "clientId",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "ga360",
- "description": "Test 52",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "channel": "web",
- "context": {
- "externalId": [
- {
- "id": "externalClientId",
- "type": "gaExternalId"
- }
- ],
- "traits": {
- "name": "Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "userId": "12345",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "12345",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Test",
- "ni": 1,
- "cd1": "Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "uid": "12345",
- "cid": "externalClientId",
- "uip": "0.0.0.0",
- "qt": 124901802438
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {}
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-].map((d) => ({ ...d, mockFns }))
\ No newline at end of file
+ },
+ {
+ name: 'ga360',
+ description: 'Test 26',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 27',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ name: 'sampleName',
+ source: 'sampleSource',
+ medium: 'sampleMedium',
+ content: 'sampleContent',
+ term: 'sampleTerm',
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ event: 'campaign test',
+ properties: {
+ testDimension: true,
+ testMetric: true,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ul: 'en-US',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ cn: 'sampleName',
+ cs: 'sampleSource',
+ cm: 'sampleMedium',
+ cc: 'sampleContent',
+ ck: 'sampleTerm',
+ cid: '00000000000000000000000000',
+ ea: 'campaign test',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 28',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.2',
+ },
+ traits: {
+ abc: '1234',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.2',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '/tests/html/ecomm_test.html',
+ referrer: 'http://0.0.0.0:1112/tests/html/',
+ search: '',
+ title: 'GA Ecommerce Test',
+ url: 'http://0.0.0.0:1112/tests/html/ecomm_test.html',
+ },
+ },
+ type: 'identify',
+ messageId: 'bc8a6af8-37fd-46a9-9592-ea29a256435f',
+ originalTimestamp: '2020-06-22T11:30:32.493Z',
+ anonymousId: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ userId: '123',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2020-06-22T11:30:32.494Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'User Enriched',
+ dt: 'GA Ecommerce Test',
+ ec: 'All',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.1.2',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ uid: '123',
+ cid: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ ni: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
+ ul: 'en-GB',
+ qt: 103120167507,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '38e169a1-3234-46f7-9ceb-c1a6a69005fe',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 29',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 30',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: '',
+ search: '?xyz=1',
+ title: '',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc%3Fxyz%3D1',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 31',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ event: 'sample event',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ea: 'sample event',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 32',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ ev: 100,
+ pr1id: 'p-298',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2id: 'p-299',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 33',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ ti: 'rudderstackorder1',
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 34',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ ti: 'rudderstackorder1',
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 35',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Refunded',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ pa: 'refund',
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ ea: 'Order Refunded',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 36',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Cart Shared',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ ea: 'Cart Shared',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ st: ' 1 2',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 37',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product Shared',
+ properties: {
+ product_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ev: 100,
+ ea: 'Product Shared',
+ ec: 'All',
+ ni: 1,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ st: 'https://www.example.com/abc',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 38',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ il1pi1id: '1',
+ pr1cd1: 'my product',
+ il1pi1nm: 'my product',
+ il1pi1pr: 24.75,
+ il1pi2id: '2',
+ pr2cd1: 'other product',
+ il1pi2nm: 'other product',
+ il1pi2pr: 24.75,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: 'Sample Product List',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ni: 1,
+ il1pi2qt: 3,
+ il1pi1qt: 1,
+ ul: 'en-US',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 39',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ il1pi1id: 'p-298',
+ pr1cd1: 'my product',
+ il1pi1nm: 'my product',
+ il1pi1pr: 24.75,
+ il1pi2id: 'p-299',
+ pr2cd1: 'other product',
+ il1pi2nm: 'other product',
+ il1pi2pr: 24.75,
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ il1nm: 'Sample Product List',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ il1pi2qt: 3,
+ il1pi1qt: 1,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 40',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ni: 1,
+ ea: 'Product List Clicked',
+ ec: 'Sample Product List',
+ pa: 'click',
+ el: 'event',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ il1nm: 'Sample Product List',
+ uid: '12345',
+ cid: '00000000000000000000000000',
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 41',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ total: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ ev: 100,
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 42',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ value: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 43',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ pa: 'refund',
+ tr: 99.99,
+ pr1id: '1',
+ pr1cd1: 'my product',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr2id: '2',
+ pr2cd1: 'other product',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ ea: 'Order Cancelled',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ti: 'rudderstackorder1',
+ ts: 13.99,
+ tt: 20.99,
+ cu: 'INR',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ pr1qt: 1,
+ pr2qt: 3,
+ ni: 1,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 44',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Order Cancelled',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No product information supplied for transaction event',
+ statTags: {
+ destType: 'GA360',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 45',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Cart Viewed',
+ properties: {
+ order_id: 'rudderstackorder1',
+ revenue: 99.99,
+ shipping: 13.99,
+ tax: 20.99,
+ currency: 'INR',
+ products: [
+ {
+ quantity: 1,
+ price: 24.75,
+ name: 'my product',
+ sku: 'p-298',
+ product_id: '1',
+ },
+ {
+ quantity: 3,
+ price: 24.75,
+ name: 'other product',
+ sku: 'p-299',
+ product_id: '2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'Cart Viewed',
+ ev: 100,
+ ec: 'EnhancedEcommerce',
+ pa: 'detail',
+ v: '1',
+ t: 'event',
+ el: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ cid: '00000000000000000000000000',
+ uid: '12345',
+ ul: 'en-US',
+ ni: 1,
+ pr1cd1: 'my product',
+ pr1id: '1',
+ pr1nm: 'my product',
+ pr1pr: 24.75,
+ pr1qt: 1,
+ pr2cd1: 'other product',
+ pr2id: '2',
+ pr2nm: 'other product',
+ pr2pr: 24.75,
+ pr2qt: 3,
+ qt: 124893881700,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 46',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name1: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ traits: {
+ name1: 'Test',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'server side identify is not on',
+ statTags: {
+ destType: 'GA360',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 47',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'screen',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ name: 'homescreen',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ cd1: 'homescreen',
+ v: '1',
+ t: 'screenview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ cd: 'homescreen',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ ul: 'en-US',
+ uip: '0.0.0.0',
+ qt: 124893881701,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 48',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'newtype',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ name: 'homescreen',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message type newtype not supported',
+ statTags: {
+ destType: 'GA360',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 49',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: '827ccb0eea8a706c4c34a16891f84e7b',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 50',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ disableMd5: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 51',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ GA: {
+ clientId: 'clientId',
+ },
+ 'Google Analytics': {
+ clientId: 'clientId',
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: 'clientId',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga360',
+ description: 'Test 52',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'externalClientId',
+ type: 'gaExternalId',
+ },
+ ],
+ traits: {
+ name: 'Test',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ properties: {
+ plan: 'standard plan',
+ name: 'rudder test',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ {
+ from: 'name',
+ to: 'dimension1',
+ },
+ {
+ from: 'custom2',
+ to: 'dimension2',
+ },
+ ],
+ metrics: [
+ {
+ from: 'email',
+ to: 'metric1',
+ },
+ {
+ from: 'trait2',
+ to: 'metric2',
+ },
+ ],
+ resetCustomDimensionsOnPage: [
+ {
+ resetCustomDimensionsOnPage: 'abc',
+ },
+ {
+ resetCustomDimensionsOnPage: 'xyz',
+ },
+ ],
+ contentGroupings: [
+ {
+ from: 'plan',
+ to: 'contentGroup1',
+ },
+ {
+ from: 'prop2',
+ to: 'contentGroup2',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '12345',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Test',
+ ni: 1,
+ cd1: 'Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ uid: '12345',
+ cid: 'externalClientId',
+ uip: '0.0.0.0',
+ qt: 124901802438,
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+].map((d) => ({ ...d, mockFns }));
diff --git a/test/integrations/destinations/ga360/router/data.ts b/test/integrations/destinations/ga360/router/data.ts
index 15086b6b2fe..e56fccaeb82 100644
--- a/test/integrations/destinations/ga360/router/data.ts
+++ b/test/integrations/destinations/ga360/router/data.ts
@@ -1,487 +1,350 @@
export const mockFns = (_) => {
- // @ts-ignore
- jest
- .useFakeTimers()
- .setSystemTime(new Date('2023-09-29'));
+ // @ts-ignore
+ jest.useFakeTimers().setSystemTime(new Date('2023-09-29'));
};
export const data = [
- {
- name: 'ga360',
- description: 'Test 0',
- feature: 'router',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- input: [
- {
- "message": {
- "channel": "web",
- "context": {
- "traits": {
- "name": "Rudder Test"
- },
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "properties": {
- "plan": "standard plan",
- "name": "rudder test"
- },
- "type": "identify",
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "123456",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "metadata": {
- "jobId": 1
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- },
- {
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "page",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "path": "/abc",
- "referrer": "q",
- "search": "",
- "title": "a",
- "url": "https://www.example.com/abc"
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "metadata": {
- "jobId": 2
- },
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ],
- destType: 'ga360',
+ {
+ name: 'ga360',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: { name: 'Rudder Test' },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
- method: 'POST',
+ properties: { plan: 'standard plan', name: 'rudder test' },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '123456',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'name', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: { email: 'test@rudderstack.com' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ type: 'page',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '/abc',
+ referrer: 'q',
+ search: '',
+ title: 'a',
+ url: 'https://www.example.com/abc',
+ },
+ integrations: { All: true },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'prop2', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
},
+ ],
+ destType: 'ga360',
},
- output: {
- response: {
- status: 200,
- body: {
- output: [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "ea": "action1",
- "ec": "Rudder Test",
- "cd1": "Rudder Test",
- "cg2": "Rudder Test",
- "v": "1",
- "t": "event",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "uid": "123456",
- "cid": "00000000000000000000000000",
- "ni": 1,
- "uip": "0.0.0.0",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "ul": "en-US",
- "qt": 124901802438,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "metadata": [
- {
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "name",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "name",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- },
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://www.google-analytics.com/collect",
- "headers": {},
- "params": {
- "v": "1",
- "t": "pageview",
- "tid": "UA-165994240-1",
- "ds": "web",
- "an": "RudderLabs JavaScript SDK",
- "av": "1.0.0",
- "aiid": "com.rudderlabs.javascript",
- "npa": 1,
- "aip": 1,
- "cid": "00000000000000000000000000",
- "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "uid": "12345",
- "uip": "0.0.0.0",
- "ul": "en-US",
- "dh": "www.example.com",
- "dl": "https://www.example.com/abc",
- "dp": "%2Fabc",
- "dr": "q",
- "dt": "a",
- "qt": 124893881701,
- },
- "body": {
- "JSON": {},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "00000000000000000000000000"
- },
- "metadata": [
- {
- "jobId": 2
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "trackingID": "UA-165994240-1",
- "doubleClick": true,
- "enhancedLinkAttribution": true,
- "classic": true,
- "ignoredReferrers": "",
- "serverClassic": false,
- "includeSearch": true,
- "trackCategorizedPages": true,
- "trackNamedPages": true,
- "sampleRate": "100",
- "siteSpeedSampleRate": "1",
- "setAllMappedProps": true,
- "enableServerSideIdentify": true,
- "serverSideIdentifyEventCategory": "cat1",
- "serverSideIdentifyEventAction": "action1",
- "anonymizeIp": true,
- "domain": "domain",
- "enhancedEcommerce": true,
- "nonInteraction": true,
- "optimize": "abc123",
- "sendUserId": true,
- "useGoogleAmpClientId": true,
- "web-useNativeSDK": true,
- "dimensions": [
- {
- "from": "name",
- "to": "dimension1"
- },
- {
- "from": "custom2",
- "to": "dimension2"
- }
- ],
- "metrics": [
- {
- "from": "email",
- "to": "metric1"
- },
- {
- "from": "trait2",
- "to": "metric2"
- }
- ],
- "resetCustomDimensionsOnPage": [
- {
- "resetCustomDimensionsOnPage": "abc"
- },
- {
- "resetCustomDimensionsOnPage": "xyz"
- }
- ],
- "contentGroupings": [
- {
- "from": "plan",
- "to": "contentGroup1"
- },
- {
- "from": "prop2",
- "to": "contentGroup2"
- }
- ]
- },
- "Enabled": true
- }
- }
- ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ ea: 'action1',
+ ec: 'Rudder Test',
+ cd1: 'Rudder Test',
+ cg2: 'Rudder Test',
+ v: '1',
+ t: 'event',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ uid: '123456',
+ cid: '00000000000000000000000000',
+ ni: 1,
+ uip: '0.0.0.0',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ul: 'en-US',
+ qt: 124901802438,
+ },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'name',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'name', to: 'contentGroup2' },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/collect',
+ headers: {},
+ params: {
+ v: '1',
+ t: 'pageview',
+ tid: 'UA-165994240-1',
+ ds: 'web',
+ an: 'RudderLabs JavaScript SDK',
+ av: '1.0.0',
+ aiid: 'com.rudderlabs.javascript',
+ npa: 1,
+ aip: 1,
+ cid: '00000000000000000000000000',
+ ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ uid: '12345',
+ uip: '0.0.0.0',
+ ul: 'en-US',
+ dh: 'www.example.com',
+ dl: 'https://www.example.com/abc',
+ dp: '%2Fabc',
+ dr: 'q',
+ dt: 'a',
+ qt: 124893881701,
+ },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
+ files: {},
+ userId: '00000000000000000000000000',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ trackingID: 'UA-165994240-1',
+ doubleClick: true,
+ enhancedLinkAttribution: true,
+ classic: true,
+ ignoredReferrers: '',
+ serverClassic: false,
+ includeSearch: true,
+ trackCategorizedPages: true,
+ trackNamedPages: true,
+ sampleRate: '100',
+ siteSpeedSampleRate: '1',
+ setAllMappedProps: true,
+ enableServerSideIdentify: true,
+ serverSideIdentifyEventCategory: 'cat1',
+ serverSideIdentifyEventAction: 'action1',
+ anonymizeIp: true,
+ domain: 'domain',
+ enhancedEcommerce: true,
+ nonInteraction: true,
+ optimize: 'abc123',
+ sendUserId: true,
+ useGoogleAmpClientId: true,
+ 'web-useNativeSDK': true,
+ dimensions: [
+ { from: 'name', to: 'dimension1' },
+ { from: 'custom2', to: 'dimension2' },
+ ],
+ metrics: [
+ { from: 'email', to: 'metric1' },
+ { from: 'trait2', to: 'metric2' },
+ ],
+ resetCustomDimensionsOnPage: [
+ { resetCustomDimensionsOnPage: 'abc' },
+ { resetCustomDimensionsOnPage: 'xyz' },
+ ],
+ contentGroupings: [
+ { from: 'plan', to: 'contentGroup1' },
+ { from: 'prop2', to: 'contentGroup2' },
+ ],
},
+ Enabled: true,
+ },
},
+ ],
},
- }
+ },
+ },
+ },
].map((d) => ({ ...d, mockFns }));
diff --git a/test/integrations/destinations/ga4/dataDelivery/data.ts b/test/integrations/destinations/ga4/dataDelivery/data.ts
new file mode 100644
index 00000000000..9ccf35e2a1e
--- /dev/null
+++ b/test/integrations/destinations/ga4/dataDelivery/data.ts
@@ -0,0 +1,177 @@
+export const data = [
+ {
+ name: 'ga4',
+ description: 'Successful data delivery',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'dummyMeasurementId',
+ },
+ body: {
+ JSON: {
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item_list',
+ params: {
+ item_list_id: 'related_products',
+ item_list_name: 'Related_products',
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {
+ validationMessages: [],
+ },
+ status: 200,
+ },
+ message: '[GA4 Response Handler] - Request Processed Successfully',
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: 'Data delivery failure',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/debug/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'dummyMeasurementId',
+ },
+ body: {
+ JSON: {
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item',
+ params: {
+ category: 'Electronics',
+ productID: 'ABC123',
+ productName: 'Example Product',
+ customer_name: 'Sample User',
+ link_imageURL: 'https://example.com/images/product.jpg',
+ customer_email: 'testrudder@gmail.com',
+ link_productURL: 'https://example.com/products/ABC123',
+ stockAvailability: true,
+ details_features_0: 'wireless charging',
+ details_features_1: 'water-resistant',
+ engagement_time_msec: 1,
+ transaction_currency: 'USD',
+ customer_loyaltyPoints: 500,
+ transaction_totalAmount: 150.99,
+ transaction_discountApplied: 20.5,
+ details_specifications_color: 'blue',
+ details_specifications_specifications_specifications_specifications_color:
+ 'blue',
+ details_specifications_specifications_specifications_specifications_weight:
+ '1.5kg',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse:
+ 'The event param [string_value: "1.5kg"] has a duplicate name [details_specifications_specifications_specifications_specifications_weight].',
+ message:
+ 'Validation Server Response Handler:: Validation Error for ga4 of field path :events.params | NAME_DUPLICATED-The event param [string_value: "1.5kg"] has a duplicate name [details_specifications_specifications_specifications_specifications_weight].',
+ statTags: {
+ destType: 'GA4',
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
+ },
+ status: 400,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ga4/mocks.ts b/test/integrations/destinations/ga4/mocks.ts
new file mode 100644
index 00000000000..7b47fe9f449
--- /dev/null
+++ b/test/integrations/destinations/ga4/mocks.ts
@@ -0,0 +1,3 @@
+export const defaultMockFns = () => {
+ jest.spyOn(Date, 'now').mockImplementation(() => new Date('2022-04-29T05:17:09Z').valueOf());
+};
diff --git a/test/integrations/destinations/ga4/network.ts b/test/integrations/destinations/ga4/network.ts
new file mode 100644
index 00000000000..e8c91ef4512
--- /dev/null
+++ b/test/integrations/destinations/ga4/network.ts
@@ -0,0 +1,119 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'dummyMeasurementId',
+ },
+ data: {
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item_list',
+ params: {
+ item_list_id: 'related_products',
+ item_list_name: 'Related_products',
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ validationMessages: [],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://www.google-analytics.com/debug/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'dummyMeasurementId',
+ },
+ data: {
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item',
+ params: {
+ category: 'Electronics',
+ productID: 'ABC123',
+ productName: 'Example Product',
+ customer_name: 'Sample User',
+ link_imageURL: 'https://example.com/images/product.jpg',
+ customer_email: 'testrudder@gmail.com',
+ link_productURL: 'https://example.com/products/ABC123',
+ stockAvailability: true,
+ details_features_0: 'wireless charging',
+ details_features_1: 'water-resistant',
+ engagement_time_msec: 1,
+ transaction_currency: 'USD',
+ customer_loyaltyPoints: 500,
+ transaction_totalAmount: 150.99,
+ transaction_discountApplied: 20.5,
+ details_specifications_color: 'blue',
+ details_specifications_specifications_specifications_specifications_color: 'blue',
+ details_specifications_specifications_specifications_specifications_weight: '1.5kg',
+ },
+ },
+ ],
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ validationMessages: [
+ {
+ fieldPath: 'events.params',
+ description:
+ 'The event param [string_value: "1.5kg"] has a duplicate name [details_specifications_specifications_specifications_specifications_weight].',
+ validationCode: 'NAME_DUPLICATED',
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/ga4/processor/data.ts b/test/integrations/destinations/ga4/processor/data.ts
new file mode 100644
index 00000000000..f96ca9e74a6
--- /dev/null
+++ b/test/integrations/destinations/ga4/processor/data.ts
@@ -0,0 +1,14903 @@
+import { defaultMockFns } from '../mocks';
+export const data = [
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'Products Searched' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99v4f979fb997ce453373900f891',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'Products Searched',
+ properties: {
+ query: 't-shirts',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-22T10:57:58Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ timestamp_micros: 1650950229000000,
+ events: [
+ {
+ name: 'search',
+ params: {
+ search_term: 't-shirts',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product list viewed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ rudderId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99v4f979fb997ce453373900f891',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product list viewed',
+ properties: {
+ list_id: 'related_products',
+ category: 'Related_products',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item_list',
+ params: {
+ item_list_id: 'related_products',
+ item_list_name: 'Related_products',
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'promotion viewed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion viewed',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'view_promotion',
+ params: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 0,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'promotion clicked' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_promotion',
+ params: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 0,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) exclude only 'products' property from 'promotion clicked' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_promotion',
+ params: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product clicked' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product clicked',
+ properties: {
+ list_id: 'related_products',
+ category: 'Related_products',
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ timezone: {
+ name: 'Europe/Tallinn',
+ },
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_item',
+ params: {
+ item_list_id: 'related_products',
+ item_list_name: 'Related_products',
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Related_products',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ timezone_name: 'Europe/Tallinn',
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product viewed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product viewed',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_item',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'promotion clicked' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ typesOfClient: 'gtag',
+ firebaseAppId: '1:17864591371:android:7a9520d3c78962e21f9fee',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'select_promotion',
+ params: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 0,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(firebase) check all property mappings for 'promotion clicked' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ typesOfClient: 'firebase',
+ firebaseAppId: '1:17864591371:android:7a9520d3c78962e21f9fee',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ firebase_app_id: '1:17864591371:android:7a9520d3c78962e21f9fee',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ app_instance_id: 'f0dd99b6f979fb551ce583373900f937',
+ events: [
+ {
+ name: 'select_promotion',
+ params: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 0,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product added' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product removed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product removed',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'remove_from_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'cart viewed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'cart viewed',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'checkout started' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'checkout started',
+ properties: {
+ currency: 'USD',
+ total: 7.77,
+ coupon: 'SUMMER_FUN',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'begin_checkout',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ coupon: 'SUMMER_FUN',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag) check all property mappings for 'payment info entered' -> 'add_payment_info' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'payment info entered',
+ properties: {
+ currency: 'USD',
+ value: '7.77',
+ coupon: 'SUMMER_FUN',
+ payment_method: 'Credit Card',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ coupon: 'SUMMER_FUN',
+ payment_type: 'Credit Card',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ name: 'add_payment_info',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag) check all property mappings for 'checkout Step Completed' -> 'add_shipping_info' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'checkout Step Completed',
+ properties: {
+ currency: 'USD',
+ value: '7.77',
+ coupon: 'SUMMER_FUN',
+ shipping_method: 'Ground',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ coupon: 'SUMMER_FUN',
+ shipping_tier: 'Ground',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ name: 'add_shipping_info',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'order completed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'order completed',
+ properties: {
+ currency: 'USD',
+ order_id: 'T_12345',
+ total: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'purchase',
+ params: {
+ currency: 'USD',
+ transaction_id: 'T_12345',
+ value: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'order refunded' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'order refunded',
+ properties: {
+ currency: 'USD',
+ order_id: 'T_12345',
+ total: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'refund',
+ params: {
+ currency: 'USD',
+ transaction_id: 'T_12345',
+ value: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) exclude only 'products' property from 'order refunded' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'order refunded',
+ properties: {
+ currency: 'USD',
+ order_id: 'T_12345',
+ total: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'refund',
+ params: {
+ currency: 'USD',
+ transaction_id: 'T_12345',
+ value: 12.21,
+ affiliation: 'Google Store',
+ coupon: 'SUMMER_FUN',
+ shipping: 3.33,
+ tax: 1.11,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product added to wishlist' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added to wishlist',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'add_to_wishlist',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product_shared' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product_shared',
+ properties: {
+ share_via: 'Twitter',
+ content_type: 'image',
+ item_id: 'C_12345',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'share',
+ params: {
+ method: 'Twitter',
+ content_type: 'image',
+ item_id: 'C_12345',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'product_shared' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product_shared',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'share',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'cart Shared' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'cart Shared',
+ properties: {
+ share_via: 'Twitter',
+ content_type: 'image',
+ item_id: 'C_12345',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'share',
+ params: {
+ method: 'Twitter',
+ content_type: 'image',
+ item_id: 'C_12345',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'cart Shared' event name with empty properties: {}",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'cart Shared',
+ properties: {},
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'share',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) check all property mappings for group call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'group',
+ properties: {
+ group_id: 'G_12345',
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'group',
+ params: {
+ group_id: 'G_12345',
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) group: send only group event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'group',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'group',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'earn virtual currency' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'earn virtual currency',
+ properties: {
+ virtual_currency_name: 'Gems',
+ value: 5,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'earn_virtual_currency',
+ params: {
+ virtual_currency_name: 'Gems',
+ value: 5,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'earn virtual currency' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'earn virtual currency',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'earn_virtual_currency',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'generate_lead' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'generate_lead',
+ properties: {
+ currency: 'USD',
+ value: 99.99,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'generate_lead',
+ params: {
+ currency: 'USD',
+ value: 99.99,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'level_up' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'level_up',
+ properties: {
+ level: 5,
+ character: 'Player 1',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'level_up',
+ params: {
+ level: 5,
+ character: 'Player 1',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'level_up' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'level_up',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'level_up',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'login' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'login',
+ properties: {
+ method: 'Google',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'login',
+ params: {
+ method: 'Google',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'login' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'login',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'login',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'post_score' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'post_score',
+ properties: {
+ score: 10000,
+ level: 5,
+ character: 'Player 1',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'post_score',
+ params: {
+ score: 10000,
+ level: 5,
+ character: 'Player 1',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'login' event name with its required `score` properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'post_score',
+ properties: {
+ score: 10000,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'post_score',
+ params: {
+ score: 10000,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'select_content' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'select_content',
+ properties: {
+ content_type: 'product',
+ item_id: 'I_12345',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_content',
+ params: {
+ content_type: 'product',
+ item_id: 'I_12345',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'group' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'select_content',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_content',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'sign_up' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'sign_up',
+ properties: {
+ method: 'Google',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'sign_up',
+ params: {
+ method: 'Google',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send only 'sign_up' event name without it's properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'sign_up',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'sign_up',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'spend_virtual_currency' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'spend_virtual_currency',
+ properties: {
+ value: 5,
+ virtual_currency_name: 'Gems',
+ item_name: 'Starter Boost',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'spend_virtual_currency',
+ params: {
+ value: 5,
+ virtual_currency_name: 'Gems',
+ item_name: 'Starter Boost',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag) send only 'spend_virtual_currency' event name with it's required 'value' and 'virtual_currency_name' properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'spend_virtual_currency',
+ properties: {
+ value: 5,
+ virtual_currency_name: 'Gems',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'spend_virtual_currency',
+ params: {
+ value: 5,
+ virtual_currency_name: 'Gems',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send 'tutorial_begin' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutorial_begin',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'tutorial_begin',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send 'tutorial_complete' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutorial_complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'tutorial_complete',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send all properties for 'unlock_achievement' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'unlock_achievement',
+ properties: {
+ achievement_id: 'A_12345',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'unlock_achievement',
+ params: {
+ achievement_id: 'A_12345',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) send all properties for 'view_search_results' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'view_search_results',
+ properties: {
+ search_term: 'Clothing',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_search_results',
+ params: {
+ search_term: 'Clothing',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) pass only 'products: [...]' property for 'view_search_results' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'view_search_results',
+ properties: {
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_search_results',
+ params: {
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag) pass custom event name 'rudderstack event' to GA4 along with custom properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'rudderstack event',
+ properties: {
+ total: '10',
+ timezone: {
+ name: 'Europe/Tallinn',
+ },
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'rudderstack_event',
+ params: {
+ total: '10',
+ timezone_name: 'Europe/Tallinn',
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag) pass custom event name 'rudderstack event' to GA4 along with custom properties and user_properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'rudderstack event',
+ properties: {
+ total: '10',
+ user_properties: {
+ price: '19',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ user_properties: {
+ price: {
+ value: '19',
+ },
+ },
+ events: [
+ {
+ name: 'rudderstack_event',
+ params: {
+ total: '10',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (gtag) pass reserved event name to GA4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'ad_click',
+ properties: {
+ total: '10',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'track:: Reserved event names are not allowed',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Exclusion]: (gtag) pass reserved property name to GA4 for custom events',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'rudderstack event',
+ properties: {
+ firebase_conversion: 'firebase_conversion',
+ google_id: '1234',
+ ga_value: 'ga_value',
+ value: '10',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'rudderstack_event',
+ params: {
+ value: '10',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '[Exclusion]: (gtag) pass reserved property name and reserved properties in `user_properties` to GA4 for custom events',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'rudderstack event',
+ properties: {
+ firebase_conversion: 'firebase_conversion',
+ google_id: '1234',
+ ga_value: 'ga_value',
+ value: '10',
+ user_properties: {
+ first_open_time: 'first_open_time',
+ user_id: 'user_id',
+ firebase_value: 'firebase_value',
+ price: '100',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ user_properties: {
+ price: {
+ value: '100',
+ },
+ },
+ events: [
+ {
+ name: 'rudderstack_event',
+ params: {
+ value: '10',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (gtag) pass reserved event names along with reserved properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'app_remove',
+ properties: {
+ firebase_conversion: 'firebase_conversion',
+ google_id: '1234',
+ ga_value: 'ga_value',
+ value: '10',
+ user_properties: {
+ first_open_time: 'first_open_time',
+ user_id: 'user_id',
+ firebase_value: 'firebase_value',
+ price: '100',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'track:: Reserved event names are not allowed',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (gtag) pass reserved custom prefix names to GA4 events',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'firebase_event1',
+ properties: {
+ firebase_conversion: 'firebase_conversion',
+ google_id: '1234',
+ ga_value: 'ga_value',
+ value: '10',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Reserved custom prefix names are not allowed',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'product added' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ google_data: 'google_data',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) pass custom event name with its properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'rudderstack event',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'rudderstack_event',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) map 'product added' properties to ga4 'add_to_cart' items array",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ affiliation: 'Google Merchandise Store',
+ brand: 'Google',
+ category: 'Related_products',
+ coupon: 'SUMMER_FUN',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ list_id: 'related_products',
+ location_id: 'L_12345',
+ name: 'Monopoly: 3rd Edition',
+ position: '1',
+ price: '19',
+ product_id: '507f1f77bcf86cd799439011',
+ products: [],
+ quantity: '2',
+ total: '7.77',
+ variant: 'green',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ engagement_time_msec: 1,
+ items: [
+ {
+ affiliation: 'Google Merchandise Store',
+ coupon: 'SUMMER_FUN',
+ currency: 'USD',
+ discount: 2.22,
+ index: 1,
+ item_brand: 'Google',
+ item_category: 'Related_products',
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_id: '507f1f77bcf86cd799439011',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ item_name: 'Monopoly: 3rd Edition',
+ item_variant: 'green',
+ location_id: 'L_12345',
+ price: 19,
+ quantity: 2,
+ },
+ ],
+ list_id: 'related_products',
+ value: 7.77,
+ },
+ },
+ ],
+ non_personalized_ads: true,
+ timestamp_micros: 1650950229000000,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ HOST: 'www.google-analytics.com',
+ },
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '(gtag) pass event name with invalid data type for products: {...} properties (when products parameter is optional)',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ affiliation: 'Google Merchandise Store',
+ brand: 'Google',
+ category: 'Related_products',
+ coupon: 'SUMMER_FUN',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ list_id: 'related_products',
+ location_id: 'L_12345',
+ name: 'Monopoly: 3rd Edition',
+ position: '1',
+ price: '19',
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: '2',
+ variant: 'green',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ engagement_time_msec: 1,
+ items: [
+ {
+ affiliation: 'Google Merchandise Store',
+ coupon: 'SUMMER_FUN',
+ currency: 'USD',
+ discount: 2.22,
+ index: 1,
+ item_brand: 'Google',
+ item_category: 'Related_products',
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_id: '507f1f77bcf86cd799439011',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ item_name: 'Monopoly: 3rd Edition',
+ item_variant: 'green',
+ location_id: 'L_12345',
+ price: 19,
+ quantity: 2,
+ },
+ ],
+ list_id: 'related_products',
+ value: 7.77,
+ },
+ },
+ ],
+ non_personalized_ads: true,
+ timestamp_micros: 1650950229000000,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ HOST: 'www.google-analytics.com',
+ },
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '[Error] (gtag) pass event name to GA4 with missing fields i.e required in products: [..]',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'One of product_id or name is required',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description:
+ '[Error] (gtag) pass event name to GA4 with missing fields i.e required in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'One of product_id or name is required',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (gtag) missing API Secret',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'API Secret not found. Aborting ',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (gtag) missing measurementId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: '',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'measurementId must be provided. Aborting',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) firing group event with event name. should take event name by default',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'group',
+ event: 'tutorial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'join_group',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (gtag) payload has missing message.type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (gtag) payload has missing event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event name is required',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) taking client_id from anonymousId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ events: [
+ {
+ name: 'tutotial_complete',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (firebase) payload has missing ga4AppInstanceId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: '',
+ firebaseAppId: '1:17864591371:android:7a9520d3c78962e21f9fee',
+ blockPageViewEvent: false,
+ typesOfClient: 'firebase',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'ga4AppInstanceId must be provided under externalId',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] (firebase) pass reserved event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'app_store_subscription_cancel',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: '',
+ firebaseAppId: '1:17864591371:android:7a9520d3c78962e21f9fee',
+ blockPageViewEvent: false,
+ typesOfClient: 'firebase',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Reserved custom event names are not allowed',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'tutorial complete' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutorial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'tutorial_complete',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) check all property mappings for 'cart viewed' event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'cart viewed',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ products: [
+ {
+ product_id: 0,
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'view_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: 0,
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (firebase) missing firebaseAppId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: '',
+ typesOfClient: 'firebase',
+ firebaseAppId: '',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'firebaseAppId must be provided. Aborting',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) firing page call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ rudderId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'page',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ events: [
+ {
+ name: 'page_view',
+ params: {
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) firing page call with custom properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ rudderId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'page',
+ event: 'page view',
+ properties: {
+ view: 'login',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ events: [
+ {
+ name: 'page_view',
+ params: {
+ view: 'login',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (gtag) pass timestamp more than 72 hours into the past',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-20T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ blockPageViewEvent: false,
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Allowed timestamp is [72 hours] into the past',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (gtag) pass timestamp more than 15 min into the future',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-05-05T15:47:57Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'tutotial complete',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ blockPageViewEvent: false,
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Allowed timestamp is [15 minutes] into the future',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description:
+ '(gtag) pass custom properties along with products: [..] parameters to GA4 standard events along with its stated ones',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'order completed',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ myCustomProp: 'My arbitray value',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 15,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ products: [
+ {
+ product_id: '123',
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ category: 'Games',
+ item_category2: 'Board games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ ],
+ timezone: {
+ name: 'Europe/Tallinn',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'purchase',
+ params: {
+ checkout_id: '12345',
+ transaction_id: '1234',
+ myCustomProp: 'My arbitray value',
+ affiliation: 'Apple Store',
+ value: 20,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '123',
+ sku: 'G-32',
+ item_name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ item_category: 'Games',
+ item_category2: 'Board games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ ],
+ timezone_name: 'Europe/Tallinn',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '(gtag) pass custom properties excluding products: [..] parameter to GA4 standard events along with its stated ones',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'promotion clicked',
+ properties: {
+ 'customProp-1': 'check-1',
+ 'customProp-2': 'check-2',
+ timezone: {
+ name: 'Europe/Tallinn',
+ },
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ client_id: 'client_id',
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ events: [
+ {
+ name: 'select_promotion',
+ params: {
+ 'customProp-1': 'check-1',
+ 'customProp-2': 'check-2',
+ timezone_name: 'Europe/Tallinn',
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: "(gtag) message type group -> 'join_group' with custom event",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'group',
+ traits: {
+ custom1: 1234,
+ custom2: 'custom2',
+ timezone: {
+ name: 'Europe/Tallinn',
+ },
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'join_group',
+ params: {
+ custom1: 1234,
+ custom2: 'custom2',
+ timezone_name: 'Europe/Tallinn',
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag): check args keyword for price x currency multiplication',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ price: 2.4,
+ quantity: 2,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ value: 4.8,
+ engagement_time_msec: 1,
+ items: [
+ {
+ item_id: '507f1f77bcf86cd799439011',
+ item_name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ item_category: 'Apparel',
+ item_brand: 'Google',
+ item_variant: 'green',
+ price: 19,
+ quantity: 2,
+ index: 1,
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ price: 2.4,
+ quantity: 2,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ "(gtag): take page properties from context.page for 'page' call along with custom properties",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ rudderId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'page',
+ integrations: {
+ All: true,
+ },
+ properties: {
+ cust1: 1234,
+ engagementTimeMsec: 100,
+ sessionId: 655,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ events: [
+ {
+ name: 'page_view',
+ params: {
+ page_referrer: 'morkey',
+ page_title: 'miphone',
+ page_location: 'http://morkey.in',
+ cust1: 1234,
+ engagement_time_msec: 100,
+ session_id: 655,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error] GA4: event not as string',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: {
+ name: 'promotion_viewed',
+ },
+ properties: {
+ creative_name: 'Summer Banner',
+ creative_slot: 'featured_app_1',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '0',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ promotion_id: 'P_12345',
+ promotion_name: 'Summer Sale',
+ creative_name: 'summer_banner2',
+ creative_slot: 'featured_app_1',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-04-20T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'track:: event name should be string',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '[Error] GA4: client_id not found in all four path',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ price: 2.4,
+ quantity: 2,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: true,
+ sendLoginSignup: true,
+ newOrExistingUserTrait: 'firstLogin',
+ loginSignupMethod: 'method',
+ generateLead: true,
+ generateLeadValueTrait: 'value',
+ generateLeadCurrencyTrait: 'currency',
+ clientIdFieldIdentifier: 'properties.client_id',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'ga4ClientId, anonymousId or messageId must be provided',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description:
+ "client_id isn't sent from the path defined in the webapp config, falling back to default values i.e here it is anonymousId",
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ price: 2.4,
+ quantity: 2,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: true,
+ sendLoginSignup: true,
+ newOrExistingUserTrait: 'firstLogin',
+ loginSignupMethod: 'method',
+ generateLead: true,
+ generateLeadValueTrait: 'value',
+ generateLeadCurrencyTrait: 'currency',
+ clientIdFieldIdentifier: 'properties.client_id',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ items: [
+ {
+ index: 1,
+ price: 19,
+ coupon: 'SUMMER_FUN',
+ item_id: '507f1f77bcf86cd799439011',
+ currency: 'USD',
+ discount: 2.22,
+ quantity: 2,
+ item_name: 'Monopoly: 3rd Edition',
+ item_brand: 'Google',
+ affiliation: 'Google Merchandise Store',
+ location_id: 'L_12345',
+ item_list_id: 'related_products',
+ item_variant: 'green',
+ item_category: 'Apparel',
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_name: 'Related Products',
+ },
+ ],
+ price: 2.4,
+ value: 4.8,
+ currency: 'USD',
+ quantity: 2,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ client_id: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ 'any custom or item property with array value, is flattened with underscore delimeter',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'product added',
+ originalTimestamp: '2022-04-26T05:17:09Z',
+ properties: {
+ currency: 'USD',
+ total: '7.77',
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ address: {
+ city: 'kolkata',
+ district: '24pgs',
+ },
+ categoryLevels: ['Furniture', 'Bedroom Furniture', 'Dressers & Chests'],
+ products: [
+ {
+ product_id: '1234',
+ product_details: {
+ colour: 'red',
+ shape: 'rectangle',
+ },
+ productLevels: ['test1', 'test2', 'test3'],
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2022-11-14T15:20:57Z',
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: false,
+ sendLoginSignup: false,
+ generateLead: false,
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ timestamp_micros: 1650950229000000,
+ non_personalized_ads: true,
+ client_id: 'client_id',
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ currency: 'USD',
+ value: 7.77,
+ items: [
+ {
+ item_id: '1234',
+ product_details_colour: 'red',
+ product_details_shape: 'rectangle',
+ productLevels_0: 'test1',
+ productLevels_1: 'test2',
+ productLevels_2: 'test3',
+ },
+ ],
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ address_city: 'kolkata',
+ address_district: '24pgs',
+ categoryLevels_0: 'Furniture',
+ categoryLevels_1: 'Bedroom Furniture',
+ categoryLevels_2: 'Dressers & Chests',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: 'extract session_id from context.sessionId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ sessionId: 16678456735,
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ price: 2.4,
+ quantity: 2,
+ client_id: 'client@1234',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: true,
+ sendLoginSignup: true,
+ newOrExistingUserTrait: 'firstLogin',
+ loginSignupMethod: 'method',
+ generateLead: true,
+ generateLeadValueTrait: 'value',
+ generateLeadCurrencyTrait: 'currency',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ items: [
+ {
+ index: 1,
+ price: 19,
+ coupon: 'SUMMER_FUN',
+ item_id: '507f1f77bcf86cd799439011',
+ currency: 'USD',
+ discount: 2.22,
+ quantity: 2,
+ item_name: 'Monopoly: 3rd Edition',
+ item_brand: 'Google',
+ affiliation: 'Google Merchandise Store',
+ location_id: 'L_12345',
+ item_list_id: 'related_products',
+ item_variant: 'green',
+ item_category: 'Apparel',
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_name: 'Related Products',
+ },
+ ],
+ price: 2.4,
+ value: 4.8,
+ currency: 'USD',
+ quantity: 2,
+ session_id: 16678456735,
+ engagement_time_msec: 1,
+ client_id: 'client@1234',
+ },
+ },
+ ],
+ client_id: 'client_id',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) send integer userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ userId: 34567,
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ sessionId: 16678456735,
+ },
+ type: 'track',
+ event: 'product added',
+ properties: {
+ currency: 'USD',
+ price: 2.4,
+ quantity: 2,
+ client_id: 'client@1234',
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ name: 'Monopoly: 3rd Edition',
+ coupon: 'SUMMER_FUN',
+ category: 'Apparel',
+ brand: 'Google',
+ variant: 'green',
+ price: '19',
+ quantity: '2',
+ position: '1',
+ affiliation: 'Google Merchandise Store',
+ currency: 'USD',
+ discount: 2.22,
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_id: 'related_products',
+ item_list_name: 'Related Products',
+ location_id: 'L_12345',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ blockPageViewEvent: false,
+ typesOfClient: 'gtag',
+ extendPageViewParams: false,
+ sendUserId: false,
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ enableServerSideIdentify: true,
+ sendLoginSignup: true,
+ newOrExistingUserTrait: 'firstLogin',
+ loginSignupMethod: 'method',
+ generateLead: true,
+ generateLeadValueTrait: 'value',
+ generateLeadCurrencyTrait: 'currency',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'add_to_cart',
+ params: {
+ items: [
+ {
+ index: 1,
+ price: 19,
+ coupon: 'SUMMER_FUN',
+ item_id: '507f1f77bcf86cd799439011',
+ currency: 'USD',
+ discount: 2.22,
+ quantity: 2,
+ item_name: 'Monopoly: 3rd Edition',
+ item_brand: 'Google',
+ affiliation: 'Google Merchandise Store',
+ location_id: 'L_12345',
+ item_list_id: 'related_products',
+ item_variant: 'green',
+ item_category: 'Apparel',
+ item_category2: 'Adult',
+ item_category3: 'Shirts',
+ item_category4: 'Crew',
+ item_category5: 'Short sleeve',
+ item_list_name: 'Related Products',
+ },
+ ],
+ price: 2.4,
+ value: 4.8,
+ currency: 'USD',
+ quantity: 2,
+ session_id: 16678456735,
+ engagement_time_msec: 1,
+ client_id: 'client@1234',
+ },
+ },
+ ],
+ client_id: 'client_id',
+ user_id: '34567',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) login event with user_properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'login',
+ properties: {
+ method: 'facebook',
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'login',
+ params: {
+ method: 'facebook',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ user_properties: {
+ campaign: {
+ value: 'advertizing',
+ },
+ },
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) sign_up event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'sign_up',
+ properties: {
+ method: 'google',
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'sign_up',
+ params: {
+ method: 'google',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ user_properties: {
+ campaign: {
+ value: 'advertizing',
+ },
+ },
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) generate_lead event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'generate_lead',
+ properties: {
+ source: 'instagram',
+ value: 20,
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'generate_lead',
+ params: {
+ currency: 'USD',
+ value: 20,
+ source: 'instagram',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ user_properties: {
+ campaign: {
+ value: 'advertizing',
+ },
+ },
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) track call with page information such as url, title, referrer',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ initial_referrer: '$direct',
+ path: '/',
+ referrer: '$direct',
+ tab_url: 'https://www.rudderstack.com/',
+ title: 'Document',
+ url: 'https://www.rudderstack.com/',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'generate_lead',
+ properties: {
+ source: 'instagram',
+ value: 20,
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'generate_lead',
+ params: {
+ currency: 'USD',
+ value: 20,
+ source: 'instagram',
+ page_location: 'https://www.rudderstack.com/',
+ page_referrer: '$direct',
+ page_title: 'Document',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '(gtag) track event with hybrid connection mode using buffer cloud mode event approach',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'generate_lead',
+ properties: {
+ source: 'instagram',
+ value: 20,
+ },
+ integrations: {
+ All: true,
+ 'Google Analytics 4 (GA4)': {
+ clientId: '554581488.1683172875',
+ sessionId: '1683172875',
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ connectionMode: 'hybrid',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'generate_lead',
+ params: {
+ currency: 'USD',
+ value: 20,
+ source: 'instagram',
+ session_id: '1683172875',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ user_properties: {
+ campaign: {
+ value: 'advertizing',
+ },
+ },
+ client_id: '554581488.1683172875',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description:
+ '(gtag) track event with hybrid connection mode using override client_id and session_id approach',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ sessionId: 1683172874065,
+ },
+ type: 'track',
+ event: 'generate_lead',
+ properties: {
+ source: 'instagram',
+ value: 20,
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ connectionMode: 'hybrid',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'generate_lead',
+ params: {
+ currency: 'USD',
+ value: 20,
+ source: 'instagram',
+ session_id: 1683172874065,
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ user_properties: {
+ campaign: {
+ value: 'advertizing',
+ },
+ },
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) firing group calls with GA4 hybrid mode connection',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'group',
+ event: 'tutorial complete',
+ integrations: {
+ 'Google Analytics 4': {
+ clientId: '4718026.1683606287',
+ sessionId: '1683606287',
+ sessionNumber: 1,
+ },
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ connectionMode: 'hybrid',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ body: {
+ JSON: {
+ non_personalized_ads: true,
+ client_id: '4718026.1683606287',
+ events: [
+ {
+ name: 'join_group',
+ params: {
+ engagement_time_msec: 1,
+ session_id: '1683606287',
+ session_number: 1,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) sign_up event with all data types of user_properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ campaign: 'advertizing',
+ name: 'rudder',
+ age: 45,
+ hobby: ['dancing', 'singing', 'reading'],
+ enableEURegion: false,
+ isEnterpriseUser: {
+ value: false,
+ },
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'sign_up',
+ properties: {
+ method: 'google',
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6BET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'sign_up',
+ params: {
+ method: 'google',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ user_properties: {
+ age: {
+ value: 45,
+ },
+ name: {
+ value: 'rudder',
+ },
+ campaign: {
+ value: 'advertizing',
+ },
+ enableEURegion: {
+ value: false,
+ },
+ },
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '[Error]: (gtag) event name starts with numbers',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: '1234_sign_up',
+ properties: {
+ total: '10',
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ connectionMode: 'cloud',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Event name must start with a letter and can only contain letters, numbers, and underscores',
+ statTags: {
+ destType: 'GA4',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) event having multiple empty array and object parameters',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'logIn',
+ userId: 'user@1',
+ group_id: 'group@1',
+ anon_id: '78e95d6d-58c0-4237-b99e-2ef510b6d502',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'ga4AppInstanceId',
+ id: 'f0dd99b6f979fb551ce583373900f937',
+ },
+ {
+ type: 'ga4ClientId',
+ id: 'client_id',
+ },
+ ],
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ properties: {
+ user_interest: 'Moderate',
+ company_interest: '',
+ profile: [
+ {
+ is_6qa: true,
+ product: null,
+ product_fit: 'Moderate',
+ product_stage: 'Purchase',
+ intent_score: 89,
+ profile_score: 52,
+ product_display$name: 'rudderstack',
+ },
+ ],
+ user_company: 'Analytics consulting',
+ user_account: '1',
+ user_id_mappings: '330098|245252|461224|282599',
+ company_naics_6sense: '5173',
+ usr_consent: null,
+ firebase_user_id: 'kdgMnP',
+ google_user_id: 'G-123456',
+ company_domain: 'consulting.net',
+ company_region: 'New Zealand',
+ user_product_interests: {
+ ids: [],
+ list: [
+ {
+ id: 330098,
+ name: [],
+ },
+ {
+ id: 245252,
+ name: {},
+ },
+ ],
+ names: [],
+ },
+ company_country: {},
+ company_industry: 'Business Analytics',
+ company_revenue: '$5M - $10M',
+ company_annual_revenue: '5568000',
+ company_sic_description: '',
+ company_naics_description: [],
+ },
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'dummyApiSecret',
+ measurementId: 'G-T40PE6KET4',
+ firebaseAppId: '',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ connectionMode: 'cloud',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'login',
+ params: {
+ company_annual_revenue: '5568000',
+ company_domain: 'consulting.net',
+ company_industry: 'Business Analytics',
+ company_naics_6sense: '5173',
+ company_region: 'New Zealand',
+ company_revenue: '$5M - $10M',
+ engagement_time_msec: 1,
+ profile_0_intent_score: 89,
+ profile_0_is_6qa: true,
+ profile_0_product_display$name: 'rudderstack',
+ profile_0_product_fit: 'Moderate',
+ profile_0_product_stage: 'Purchase',
+ profile_0_profile_score: 52,
+ user_account: '1',
+ user_company: 'Analytics consulting',
+ user_id_mappings: '330098|245252|461224|282599',
+ user_interest: 'Moderate',
+ user_product_interests_list_0_id: 330098,
+ user_product_interests_list_1_id: 245252,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ client_id: 'client_id',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'dummyApiSecret',
+ measurement_id: 'G-T40PE6KET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ga4',
+ description: '(gtag) campaign_details custom event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ anonymousId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ campaign: {
+ id: 'google_1234',
+ name: 'Summer_fun',
+ source: 'google',
+ medium: 'cpc',
+ term: 'summer+travel',
+ content: 'logo link',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ },
+ type: 'track',
+ event: 'Campaign Details',
+ properties: {},
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiSecret: 'QyWKGHj8QhG2L4ePAPiXCA',
+ measurementId: 'G-T40PE6BET4',
+ typesOfClient: 'gtag',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ name: 'campaign_details',
+ params: {
+ campaign_id: 'google_1234',
+ campaign: 'Summer_fun',
+ source: 'google',
+ medium: 'cpc',
+ term: 'summer+travel',
+ content: 'logo link',
+ engagement_time_msec: 1,
+ },
+ },
+ ],
+ user_id: 'user@1',
+ client_id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ non_personalized_ads: true,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {
+ api_secret: 'QyWKGHj8QhG2L4ePAPiXCA',
+ measurement_id: 'G-T40PE6BET4',
+ },
+ headers: {
+ HOST: 'www.google-analytics.com',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://www.google-analytics.com/mp/collect',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+];
diff --git a/test/integrations/destinations/gainsight/network.ts b/test/integrations/destinations/gainsight/network.ts
new file mode 100644
index 00000000000..4c5a0268474
--- /dev/null
+++ b/test/integrations/destinations/gainsight/network.ts
@@ -0,0 +1,71 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://demo-domain.gainsightcloud.com/v1/data/objects/query/Company',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ result: true,
+ errorCode: null,
+ errorDesc: null,
+ requestId: '47d9c8be-4912-4610-806c-0eec22b73236',
+ data: {
+ records: [],
+ },
+ message: null,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://demo-domain.gainsightcloud.com/v1/data/objects/Company',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ result: true,
+ errorCode: null,
+ errorDesc: null,
+ requestId: '3ce46d4a-6a83-4a92-97b3-d9788a296af8',
+ data: {
+ count: 1,
+ errors: null,
+ records: [
+ {
+ Gsid: '1P0203VCESP7AUQMV9E953G',
+ },
+ ],
+ },
+ message: null,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://demo-domain.gainsightcloud.com/v1/data/objects/Company?keys=Name',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ result: true,
+ errorCode: null,
+ errorDesc: null,
+ requestId: '30630809-40a7-45d2-9673-ac2e80d06f33',
+ data: {
+ count: 1,
+ errors: null,
+ records: [
+ {
+ Gsid: '1P0203VCESP7AUQMV9E953G',
+ },
+ ],
+ },
+ message: null,
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/gainsight/processor/data.ts b/test/integrations/destinations/gainsight/processor/data.ts
new file mode 100644
index 00000000000..dc4fe25e1b1
--- /dev/null
+++ b/test/integrations/destinations/gainsight/processor/data.ts
@@ -0,0 +1,979 @@
+export const data = [
+ {
+ name: 'gainsight',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ personMap: [],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ email: 'cosmo@krammer.com',
+ name: 'Cosmo Krammer',
+ linkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ location: 'New York',
+ emailOptOut: true,
+ masterAvatarTypeCode: 10,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Email: 'cosmo@krammer.com',
+ Name: 'Cosmo Krammer',
+ LinkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ Location: 'New York',
+ EmailOptOut: true,
+ MasterAvatarTypeCode: 10,
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ personMap: [
+ {
+ from: 'age',
+ to: 'age__gc',
+ },
+ ],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ email: 'cosmo@krammer.com',
+ name: 'Cosmo Krammer',
+ linkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ location: 'New York',
+ emailOptOut: true,
+ masterAvatarTypeCode: 10,
+ age: 35,
+ randomKey: 'this should be dropped',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Email: 'cosmo@krammer.com',
+ Name: 'Cosmo Krammer',
+ LinkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ Location: 'New York',
+ EmailOptOut: true,
+ MasterAvatarTypeCode: 10,
+ age__gc: 35,
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ personMap: [],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ name: 'Cosmo Krammer',
+ linkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ location: 'New York',
+ emailOptOut: true,
+ masterAvatarTypeCode: 10,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email is required for identify',
+ statTags: {
+ destType: 'GAINSIGHT',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ sharedSecret: 'sample-shared-secret',
+ eventNameMap: [
+ {
+ from: 'Ticket Resolved',
+ to: 'Ticket Resolved Event',
+ },
+ ],
+ eventVersionMap: [
+ {
+ from: 'Ticket Resolved',
+ to: '1.0.0',
+ },
+ ],
+ topicName: 'Ticket Actions',
+ tenantId: 'sample-tenant-id',
+ personMap: [],
+ companyMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'track',
+ event: 'Ticket Resolved',
+ properties: {
+ ticketId: 'sample-ticket-id',
+ actionEmail: 'sample@email.com',
+ status: 'resovled',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ ticketId: 'sample-ticket-id',
+ actionEmail: 'sample@email.com',
+ status: 'resovled',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ tenantId: 'sample-tenant-id',
+ sharedSecret: 'sample-shared-secret',
+ 'Content-Type': 'application/json',
+ topicName: 'Ticket Actions',
+ eventName: 'Ticket Resolved Event',
+ eventVersion: '1.0.0',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/eventManager/event',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ sharedSecret: 'sample-shared-secret',
+ personMap: [],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'krammer@seinfeld.com',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'group',
+ traits: {
+ name: 'Kramerica Industries',
+ industry: 'Sitcom',
+ employees: '100',
+ status: 'complete',
+ companyType: 'spoof',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Email: 'krammer@seinfeld.com',
+ companies: [
+ {
+ Company_ID: '1P0203VCESP7AUQMV9E953G',
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ sharedSecret: 'sample-shared-secret',
+ personMap: [],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'krammer@seinfeld.com',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'group',
+ traits: {
+ name: 'Seinfeld Corps',
+ industry: 'TV Series',
+ employees: '50',
+ status: 'complete',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Email: 'krammer@seinfeld.com',
+ companies: [
+ {
+ Company_ID: '1P0203VCESP7AUQMV9E953G',
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ personMap: [],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ email: 'cosmo@krammer.com',
+ firstname: 'Cosmo',
+ lastname: 'Krammer',
+ linkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ location: 'New York',
+ emailOptOut: true,
+ masterAvatarTypeCode: 10,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Email: 'cosmo@krammer.com',
+ FirstName: 'Cosmo',
+ LastName: 'Krammer',
+ Name: 'Cosmo Krammer',
+ LinkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ Location: 'New York',
+ EmailOptOut: true,
+ MasterAvatarTypeCode: 10,
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ sharedSecret: 'sample-shared-secret',
+ eventNameMap: [
+ {
+ from: 'Ticket Resolved',
+ to: 'Ticket Resolved Event',
+ },
+ ],
+ eventVersionMap: [
+ {
+ from: 'Ticket Resolved',
+ to: '1.0.0',
+ },
+ ],
+ topicName: 'Ticket Actions',
+ tenantId: 'sample-tenant-id',
+ personMap: [],
+ companyMap: [],
+ contractId: 'externalId-shall-get-precedence',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'gainsightEventContractId',
+ id: 'sample-contract-id',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'track',
+ event: 'Ticket Resolved',
+ properties: {
+ ticketId: 'sample-ticket-id',
+ actionEmail: 'sample@email.com',
+ status: 'resovled',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ ticketId: 'sample-ticket-id',
+ actionEmail: 'sample@email.com',
+ status: 'resovled',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ tenantId: 'sample-tenant-id',
+ sharedSecret: 'sample-shared-secret',
+ 'Content-Type': 'application/json',
+ topicName: 'Ticket Actions',
+ eventName: 'Ticket Resolved Event',
+ eventVersion: '1.0.0',
+ contractId: 'sample-contract-id',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/eventManager/event',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ domain: 'demo-domain.gainsightcloud.com',
+ accessKey: 'sample-access-key',
+ personMap: [
+ {
+ from: 'car',
+ to: 'car__gc',
+ },
+ ],
+ companyMap: [],
+ eventNameMap: [],
+ eventVersionMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'identify',
+ traits: {
+ name: 'Bruce Wayne',
+ email: 'ceo@waynefoundation.com',
+ car: 'Batmobile',
+ comments: 'I am Batman!',
+ lastName: 'Wayne',
+ location: 'Gotham Central',
+ firstName: 'Bruce',
+ linkedinUrl: 'https://www.linkedin.com/in/notyourBatman/',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ Name: 'Bruce Wayne',
+ Email: 'ceo@waynefoundation.com',
+ car__gc: 'Batmobile',
+ Comments: 'I am Batman!',
+ LastName: 'Wayne',
+ Location: 'Gotham Central',
+ FirstName: 'Bruce',
+ LinkedinUrl: 'https://www.linkedin.com/in/notyourBatman/',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ Accesskey: 'sample-access-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://demo-domain.gainsightcloud.com/v1.0/api/people',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/gainsight/router/data.ts b/test/integrations/destinations/gainsight/router/data.ts
new file mode 100644
index 00000000000..9550fa892b9
--- /dev/null
+++ b/test/integrations/destinations/gainsight/router/data.ts
@@ -0,0 +1,436 @@
+export const data = [
+ {
+ name: 'gainsight',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-05-28T11:22:01.842Z',
+ userId: 'live-test',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ path: '/Users/anurajguha/workspace/simple-html-test/index.html',
+ title: 'Test',
+ search: '',
+ tab_url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-GB',
+ screen: { density: 2 },
+ traits: {
+ name: 'Cosmo Krammer',
+ email: 'cosmo@krammer.com',
+ location: 'New York',
+ emailOptOut: true,
+ linkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ masterAvatarTypeCode: 10,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
+ },
+ rudderId: '94d40f2f-5787-4798-8a03-34f3b02f5ede',
+ messageId: '8274e525-d99c-4f55-b67a-bbc890d1444c',
+ timestamp: '2021-05-28T16:52:01.859+05:30',
+ receivedAt: '2021-05-28T16:52:01.859+05:30',
+ request_ip: '[::1]',
+ anonymousId: '1585ea2f-dddc-4d23-935f-c1196405d61e',
+ integrations: { All: true },
+ originalTimestamp: '2021-05-28T11:22:01.842Z',
+ },
+ metadata: {
+ userId: '94d40f2f-5787-4798-8a03-34f3b02f5ede',
+ jobId: 1,
+ sourceId: '1syvMwC0K62eIb4yAV9kFJtbDEA',
+ destinationId: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ attemptNum: 0,
+ receivedAt: '2021-05-28T16:52:01.859+05:30',
+ createdAt: '2021-05-28T11:22:02.463Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ destination: {
+ ID: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ Name: 'gainsight-dev-dest',
+ DestinationDefinition: {
+ ID: '1syuhEt4I8jpvlwJc4lr1IiLjPu',
+ Name: 'GAINSIGHT',
+ DisplayName: 'Gainsight',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'accessKey',
+ 'sharedSecret',
+ 'tenantId',
+ 'domain',
+ 'personMap',
+ 'companyMap',
+ 'topicName',
+ 'eventNameMap',
+ 'eventVersionMap',
+ 'contractId',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['accessKey', 'sharedSecret'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accessKey: 'sample-access-key',
+ contractId: '',
+ domain: 'demo-account.gainsightcloud.com',
+ sharedSecret: '',
+ tenantId: '',
+ topicName: '',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ type: 'track',
+ event: 'Demo Request',
+ sentAt: '2021-05-28T11:52:12.893Z',
+ userId: '',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ path: '/Users/anurajguha/workspace/simple-html-test/index.html',
+ title: 'Test',
+ search: '',
+ tab_url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-GB',
+ screen: { density: 2 },
+ traits: {},
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
+ },
+ rudderId: '1a30a93f-916b-4c39-ad20-1ce7bbbd7754',
+ messageId: 'f5619b1a-8704-42a8-bab9-92bbeaa44896',
+ timestamp: '2021-05-28T17:22:12.905+05:30',
+ properties: { email: 'sample@user.com', status: 'active' },
+ receivedAt: '2021-05-28T17:22:12.905+05:30',
+ request_ip: '[::1]',
+ anonymousId: '1585ea2f-dddc-4d23-935f-c1196405d61e',
+ integrations: { All: true },
+ originalTimestamp: '2021-05-28T11:52:12.893Z',
+ },
+ metadata: {
+ userId: '1a30a93f-916b-4c39-ad20-1ce7bbbd7754',
+ jobId: 2,
+ sourceId: '1syvMwC0K62eIb4yAV9kFJtbDEA',
+ destinationId: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ attemptNum: 0,
+ receivedAt: '2021-05-28T17:22:12.905+05:30',
+ createdAt: '2021-05-28T11:52:15.283Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ destination: {
+ ID: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ Name: 'gainsight-dev-dest',
+ DestinationDefinition: {
+ ID: '1syuhEt4I8jpvlwJc4lr1IiLjPu',
+ Name: 'GAINSIGHT',
+ DisplayName: 'Gainsight',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'accessKey',
+ 'sharedSecret',
+ 'tenantId',
+ 'domain',
+ 'personMap',
+ 'companyMap',
+ 'topicName',
+ 'eventNameMap',
+ 'eventVersionMap',
+ 'contractId',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['accessKey', 'sharedSecret'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accessKey: 'sample-access-key',
+ contractId: 'sample-contract-id',
+ domain: 'demo-account.gainsightcloud.com',
+ eventNameMap: [{ from: 'Demo Request', to: 'Product Demo' }],
+ eventVersionMap: [{ from: 'Demo Request', to: '1.0.0' }],
+ sharedSecret: 'sample-shared-secret',
+ tenantId: 'sample-tenant-id',
+ topicName: 'Support Tickets',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ ],
+ destType: 'gainsight',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://demo-account.gainsightcloud.com/v1.0/api/people',
+ headers: { Accesskey: 'sample-access-key', 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ Email: 'cosmo@krammer.com',
+ Name: 'Cosmo Krammer',
+ LinkedinUrl: 'https://linkedin.com/cosmo-krammer',
+ Location: 'New York',
+ EmailOptOut: true,
+ MasterAvatarTypeCode: 10,
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ userId: '94d40f2f-5787-4798-8a03-34f3b02f5ede',
+ jobId: 1,
+ sourceId: '1syvMwC0K62eIb4yAV9kFJtbDEA',
+ destinationId: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ attemptNum: 0,
+ receivedAt: '2021-05-28T16:52:01.859+05:30',
+ createdAt: '2021-05-28T11:22:02.463Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ Name: 'gainsight-dev-dest',
+ DestinationDefinition: {
+ ID: '1syuhEt4I8jpvlwJc4lr1IiLjPu',
+ Name: 'GAINSIGHT',
+ DisplayName: 'Gainsight',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'accessKey',
+ 'sharedSecret',
+ 'tenantId',
+ 'domain',
+ 'personMap',
+ 'companyMap',
+ 'topicName',
+ 'eventNameMap',
+ 'eventVersionMap',
+ 'contractId',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['accessKey', 'sharedSecret'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accessKey: 'sample-access-key',
+ contractId: '',
+ domain: 'demo-account.gainsightcloud.com',
+ sharedSecret: '',
+ tenantId: '',
+ topicName: '',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://demo-account.gainsightcloud.com/v1.0/api/eventManager/event',
+ headers: {
+ sharedSecret: 'sample-shared-secret',
+ topicName: 'Support Tickets',
+ tenantId: 'sample-tenant-id',
+ 'Content-Type': 'application/json',
+ eventName: 'Product Demo',
+ eventVersion: '1.0.0',
+ contractId: 'sample-contract-id',
+ Accesskey: 'sample-access-key',
+ },
+ params: {},
+ body: {
+ JSON: { email: 'sample@user.com', status: 'active' },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ userId: '1a30a93f-916b-4c39-ad20-1ce7bbbd7754',
+ jobId: 2,
+ sourceId: '1syvMwC0K62eIb4yAV9kFJtbDEA',
+ destinationId: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ attemptNum: 0,
+ receivedAt: '2021-05-28T17:22:12.905+05:30',
+ createdAt: '2021-05-28T11:52:15.283Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1syvZAuiGo4l1SIsil0TxDEx34G',
+ Name: 'gainsight-dev-dest',
+ DestinationDefinition: {
+ ID: '1syuhEt4I8jpvlwJc4lr1IiLjPu',
+ Name: 'GAINSIGHT',
+ DisplayName: 'Gainsight',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'accessKey',
+ 'sharedSecret',
+ 'tenantId',
+ 'domain',
+ 'personMap',
+ 'companyMap',
+ 'topicName',
+ 'eventNameMap',
+ 'eventVersionMap',
+ 'contractId',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['accessKey', 'sharedSecret'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accessKey: 'sample-access-key',
+ contractId: 'sample-contract-id',
+ domain: 'demo-account.gainsightcloud.com',
+ eventNameMap: [{ from: 'Demo Request', to: 'Product Demo' }],
+ eventVersionMap: [{ from: 'Demo Request', to: '1.0.0' }],
+ sharedSecret: 'sample-shared-secret',
+ tenantId: 'sample-tenant-id',
+ topicName: 'Support Tickets',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/gainsight_px/network.ts b/test/integrations/destinations/gainsight_px/network.ts
new file mode 100644
index 00000000000..99f51d9d8ef
--- /dev/null
+++ b/test/integrations/destinations/gainsight_px/network.ts
@@ -0,0 +1,251 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/users/sample-user-id',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ aptrinsicId: '347c4c87-98c7-4ca6-a6da-678ed6924c22',
+ identifyId: 'sample-user-id',
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ lastSeenDate: 0,
+ signUpDate: 1624431528295,
+ firstVisitDate: 0,
+ title: 'engineer',
+ phone: '',
+ score: 0,
+ role: '',
+ subscriptionId: '',
+ accountId: '',
+ numberOfVisits: 1,
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ stateName: '',
+ stateCode: '',
+ city: 'New York',
+ street: '',
+ postalCode: '',
+ continent: '',
+ regionName: '',
+ timeZone: '',
+ coordinates: {
+ latitude: 0.0,
+ longitude: 0.0,
+ },
+ },
+ propertyKeys: ['AP-XABC-123'],
+ createDate: 1624431528295,
+ lastModifiedDate: 1624431528295,
+ customAttributes: null,
+ globalUnsubscribe: false,
+ sfdcContactId: '',
+ lastVisitedUserAgentData: null,
+ id: 'sample-user-id',
+ lastInferredLocation: {
+ countryName: '',
+ countryCode: '',
+ stateName: '',
+ stateCode: '',
+ city: '',
+ street: '',
+ postalCode: '',
+ continent: '',
+ regionName: '',
+ timeZone: '',
+ coordinates: {
+ latitude: 0.0,
+ longitude: 0.0,
+ },
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/accounts/ecorp-id',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ id: 'ecorp-id',
+ name: 'ECorp',
+ trackedSubscriptionId: '',
+ sfdcId: '',
+ lastSeenDate: 0,
+ dunsNumber: '',
+ industry: 'software',
+ numberOfEmployees: 400,
+ sicCode: '',
+ website: 'www.ecorp.com',
+ naicsCode: '',
+ plan: 'premium',
+ location: {
+ countryName: '',
+ countryCode: '',
+ stateName: '',
+ stateCode: '',
+ city: '',
+ street: '',
+ postalCode: '',
+ continent: '',
+ regionName: '',
+ timeZone: '',
+ coordinates: {
+ latitude: 0.0,
+ longitude: 0.0,
+ },
+ },
+ numberOfUsers: 0,
+ propertyKeys: ['AP-XABC-123'],
+ createDate: 1624261864923,
+ lastModifiedDate: 1624261864923,
+ customAttributes: null,
+ parentGroupId: '',
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/accounts/ecorp-id',
+ method: 'PUT',
+ },
+ httpRes: {
+ data: {
+ id: 'ecorp-id',
+ name: 'ECorp',
+ trackedSubscriptionId: '',
+ sfdcId: '',
+ lastSeenDate: 0,
+ dunsNumber: '',
+ industry: 'software',
+ numberOfEmployees: 400,
+ sicCode: '',
+ website: 'www.ecorp.com',
+ naicsCode: '',
+ plan: 'premium',
+ location: {
+ countryName: '',
+ countryCode: '',
+ stateName: '',
+ stateCode: '',
+ city: '',
+ street: '',
+ postalCode: '',
+ continent: '',
+ regionName: '',
+ timeZone: '',
+ coordinates: {
+ latitude: 0.0,
+ longitude: 0.0,
+ },
+ },
+ numberOfUsers: 0,
+ propertyKeys: ['AP-XABC-123'],
+ createDate: 1624261864923,
+ lastModifiedDate: 1624261864923,
+ customAttributes: null,
+ parentGroupId: '',
+ },
+ status: 204,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/users/absent-id',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ externalapierror: {
+ status: 'NOT_FOUND',
+ message: 'User was not found for parameters {id=absent-id}',
+ debugMessage: null,
+ subErrors: null,
+ },
+ },
+ status: 404,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/users/stanley-kubrick',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ id: 'ecorp-id',
+ name: 'ECorp',
+ trackedSubscriptionId: '',
+ sfdcId: '',
+ lastSeenDate: 0,
+ dunsNumber: '',
+ industry: 'software',
+ numberOfEmployees: 400,
+ sicCode: '',
+ website: 'www.ecorp.com',
+ naicsCode: '',
+ plan: 'premium',
+ location: {
+ countryName: '',
+ countryCode: '',
+ stateName: '',
+ stateCode: '',
+ city: '',
+ street: '',
+ postalCode: '',
+ continent: '',
+ regionName: '',
+ timeZone: '',
+ coordinates: {
+ latitude: 0.0,
+ longitude: 0.0,
+ },
+ },
+ numberOfUsers: 0,
+ propertyKeys: ['AP-XABC-123'],
+ createDate: 1624261864923,
+ lastModifiedDate: 1624261864923,
+ customAttributes: null,
+ parentGroupId: '',
+ },
+ status: 200,
+ },
+ },
+ // Axios Error
+ {
+ httpReq: {
+ url: 'https://api.aptrinsic.com/v1/users/myUId',
+ headers: { 'X-APTRINSIC-API-KEY': 'sample-api-key', 'Content-Type': 'application/json' },
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 403',
+ name: 'AxiosError',
+ stack:
+ 'AxiosError: Request failed with status code 403\n at settle (/Users/saisankeerth/rudderstack/rudder-transformer/node_modules/axios/lib/core/settle.js:19:12)\n at IncomingMessage.handleStreamEnd (/Users/saisankeerth/rudderstack/rudder-transformer/node_modules/axios/lib/adapters/http.js:589:11)\n at IncomingMessage.emit (node:events:529:35)\n at IncomingMessage.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1400:12)\n at processTicksAndRejections (node:internal/process/task_queues:82:21)',
+ config: {
+ headers: {
+ Accept: 'application/json, text/plain, */*',
+ 'Content-Type': 'application/json',
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'User-Agent': 'axios/1.6.5',
+ 'Accept-Encoding': 'gzip, compress, deflate, br',
+ },
+ method: 'get',
+ dummy: 'upgrade required', // keyword
+ url: 'https://api.aptrinsic.com/v1/users/myUId',
+ },
+ code: 'FORBIDDEN',
+ status: 403,
+ data: '\u003c!doctype html\u003e\u003cmeta charset="utf-8"\u003e\u003cmeta name=viewport content="width=device-width, initial-scale=1"\u003e\u003ctitle\u003e403\u003c/title\u003e403 Forbidden',
+ },
+ },
+];
diff --git a/test/integrations/destinations/gainsight_px/processor/data.ts b/test/integrations/destinations/gainsight_px/processor/data.ts
new file mode 100644
index 00000000000..3dfe86aa985
--- /dev/null
+++ b/test/integrations/destinations/gainsight_px/processor/data.ts
@@ -0,0 +1,2165 @@
+export const data = [
+ {
+ name: 'gainsight_px',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ userId: 'sample-user-id',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ type: 'track',
+ event: 'Product Added',
+ properties: {
+ product_id: '123',
+ sku: 'F16',
+ category: 'Games',
+ name: 'Game',
+ brand: 'Gamepro',
+ variant: '111',
+ price: 13.49,
+ quantity: 11,
+ coupon: 'DISC21',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.png',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ attributes: {
+ product_id: '123',
+ sku: 'F16',
+ category: 'Games',
+ name: 'Game',
+ brand: 'Gamepro',
+ variant: '111',
+ price: 13.49,
+ quantity: 11,
+ coupon: 'DISC21',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.png',
+ },
+ propertyKey: 'AP-XABC-123',
+ userType: 'USER',
+ identifyId: 'sample-user-id',
+ date: 1571043797562,
+ eventName: 'Product Added',
+ globalContext: {
+ projectId: 'p-123',
+ tag: 'sample-category-tag',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.27.0',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:8887/',
+ path: '/',
+ title: 'RudderStack in 5',
+ search: '',
+ tab_url: 'http://127.0.0.1:8887/',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1512,
+ height: 982,
+ density: 2,
+ innerWidth: 774,
+ innerHeight: 774,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.27.0',
+ },
+ campaign: {},
+ sessionId: 1679967592314,
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
+ properties: {
+ email: '84@84.com',
+ price: '56.0',
+ quantity: '5',
+ },
+ },
+ userId: 'sample-user-id',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ type: 'track',
+ event: 'Marketing - Plan Change Events',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ attributes: {},
+ url: 'http://127.0.0.1:8887/',
+ propertyKey: 'AP-XABC-123',
+ userType: 'USER',
+ identifyId: 'sample-user-id',
+ referrer: '$direct',
+ date: 1571043797562,
+ sessionId: 1679967592314,
+ eventName: 'Marketing - Plan Change Events',
+ globalContext: {
+ projectId: 'p-123',
+ tag: 'sample-category-tag',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ userId: 'sample-user-id',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ type: 'track',
+ event: 'Track Me',
+ properties: {
+ description: 'Sample Track call',
+ globalContext: {
+ testOverride: 'some-value',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ attributes: {
+ description: 'Sample Track call',
+ },
+ propertyKey: 'AP-XABC-123',
+ userType: 'USER',
+ identifyId: 'sample-user-id',
+ date: 1571043797562,
+ eventName: 'Track Me',
+ globalContext: {
+ testOverride: 'some-value',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: 'sample-user-id',
+ anonymousId: 'sample-anon-id',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ propertyKeys: ['AP-XABC-123'],
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ },
+ customAttributes: {
+ hobby: 'Sample Hobby',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users/sample-user-id',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ medium: null,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ userId: 'sample-user-id',
+ groupId: 'ecorp-id',
+ type: 'group',
+ traits: {
+ name: 'ECorp',
+ industry: 'software',
+ numberOfEmployees: 400,
+ website: 'www.ecorp.com',
+ plan: 'premium',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ accountId: 'ecorp-id',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users/sample-user-id',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'userId or anonymousId is required for identify',
+ statTags: {
+ destType: 'GAINSIGHT_PX',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'Product Added',
+ properties: {
+ product_id: '123',
+ sku: 'F16',
+ category: 'Games',
+ name: 'Game',
+ brand: 'Gamepro',
+ variant: '111',
+ price: 13.49,
+ quantity: 11,
+ coupon: 'DISC21',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.png',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "userId"',
+ statTags: {
+ destType: 'GAINSIGHT_PX',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ userId: 'sample-user-id',
+ type: 'group',
+ traits: {
+ name: 'ECorp',
+ industry: 'software',
+ numberOfEmployees: 400,
+ website: 'www.ecorp.com',
+ plan: 'premium',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'groupId is required for group',
+ statTags: {
+ destType: 'GAINSIGHT_PX',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ userId: 'sample-user-id',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ type: 'track',
+ event: 'Stringify Test',
+ properties: {
+ description: 'Stringify test for object values',
+ nested: {
+ a: [1, 2, 3],
+ b: {
+ c: 1,
+ },
+ },
+ arr: [1, 2, 3],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ attributes: {
+ description: 'Stringify test for object values',
+ nested: '{"a":[1,2,3],"b":{"c":1}}',
+ arr: '[1,2,3]',
+ },
+ propertyKey: 'AP-XABC-123',
+ userType: 'USER',
+ identifyId: 'sample-user-id',
+ date: 1571043797562,
+ eventName: 'Stringify Test',
+ globalContext: {
+ projectId: 'p-123',
+ tag: 'sample-category-tag',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [
+ {
+ from: 'projectId',
+ to: 'p-123',
+ },
+ {
+ from: 'tag',
+ to: 'sample-category-tag',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ userId: 'sample-user-id',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ type: 'track',
+ event: 'Stringify Test',
+ properties: {
+ description: 'Stringify test for object values',
+ nested: {
+ a: [1, 2, 3],
+ b: {
+ c: 1,
+ },
+ },
+ arr: [1, 2, 3],
+ globalContext: {
+ someKey: 'someVal',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ attributes: {
+ description: 'Stringify test for object values',
+ nested: '{"a":[1,2,3],"b":{"c":1}}',
+ arr: '[1,2,3]',
+ },
+ propertyKey: 'AP-XABC-123',
+ userType: 'USER',
+ identifyId: 'sample-user-id',
+ date: 1571043797562,
+ eventName: 'Stringify Test',
+ globalContext: {
+ someKey: 'someVal',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ userId: 'absent-id',
+ groupId: 'ecorp-id',
+ type: 'group',
+ traits: {
+ name: 'ECorp',
+ industry: 'software',
+ numberOfEmployees: 400,
+ website: 'www.ecorp.com',
+ plan: 'premium',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'aborting group call: {"status":"NOT_FOUND","message":"User was not found for parameters {id=absent-id}","debugMessage":null,"subErrors":null}',
+ statTags: {
+ destType: 'GAINSIGHT_PX',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: 'absent-id',
+ anonymousId: 'sample-anon-id',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ identifyId: 'absent-id',
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ createDate: 1571043797562,
+ title: 'engineer',
+ propertyKeys: ['AP-XABC-123'],
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ },
+ customAttributes: {
+ hobby: 'Sample Hobby',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: 'absent-id',
+ anonymousId: 'sample-anon-id',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ accountId: 1234,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ identifyId: 'absent-id',
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ createDate: 1571043797562,
+ title: 'engineer',
+ propertyKeys: ['AP-XABC-123'],
+ accountId: '1234',
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ },
+ customAttributes: {},
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'sample-anon-id',
+ userId: 'absent-id',
+ groupId: 'ecorp-id',
+ type: 'group',
+ traits: {
+ name: 'ECorp',
+ industry: 'software',
+ numberOfEmployees: 400,
+ website: 'www.ecorp.com',
+ plan: 'premium',
+ term: null,
+ },
+ integrations: {
+ All: true,
+ GAINSIGHT_PX: {
+ limitAPIForGroup: true,
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.aptrinsic.com/v1/users/absent-id',
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ accountId: 'ecorp-id',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 14 : existing user with no createdAt field in traits but signUpDate exists',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: 'sample-user-id',
+ anonymousId: 'sample-anon-id',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ term: null,
+ campaign: '',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1624431528295,
+ title: 'engineer',
+ propertyKeys: ['AP-XABC-123'],
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ },
+ customAttributes: {
+ hobby: 'Sample Hobby',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users/sample-user-id',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 15 : new user with no signUpDate and createDate in traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'sample-api-key',
+ productTagKey: 'AP-XABC-123',
+ accountAttributeMap: [
+ {
+ from: '',
+ to: '',
+ },
+ ],
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ globalContextMap: [],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ userId: 'absent-id',
+ anonymousId: 'sample-anon-id',
+ type: 'identify',
+ traits: {
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ title: 'engineer',
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ hobbyCustomField: 'Sample Hobby',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ identifyId: 'absent-id',
+ type: 'USER',
+ gender: 'MALE',
+ email: 'user@email.com',
+ firstName: 'Sample',
+ lastName: 'User',
+ signUpDate: 1571043797562,
+ createDate: 1571043797562,
+ title: 'engineer',
+ propertyKeys: ['AP-XABC-123'],
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ city: 'New York',
+ },
+ customAttributes: {
+ hobby: 'Sample Hobby',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ endpoint: 'https://api.aptrinsic.com/v1/users',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 16 : existing user with no signUpDate and createDate in traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: '1uLuOdwPCqtei55ZKXewwPhjQPf',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [
+ {
+ from: 'cultureCustomField',
+ to: 'culture',
+ },
+ ],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [
+ {
+ from: 'kubrickTest',
+ to: 'value',
+ },
+ ],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [
+ {
+ from: 'hobbyCustomField',
+ to: 'hobby',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-06-25T08:59:52.891Z',
+ userId: 'stanley-kubrick',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ title: 'Test',
+ search: '',
+ path: 'index.html',
+ url: 'http://127.0.0.1:3003/index.html',
+ tab_url: 'http://127.0.0.1:3003/index.html',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ width: 1920,
+ height: 1080,
+ density: 1,
+ innerWidth: 1920,
+ innerHeight: 436,
+ },
+ traits: {
+ name: 'Stanley Kubrick',
+ email: 'stanley@kubrick.com',
+ score: 100,
+ title: 'Director/Film Maker',
+ gender: 'Male',
+ countryCode: 'US',
+ countryName: 'USA',
+ hobbyCustomField: 'Making films. Being a genius',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.18',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
+ },
+ rudderId: '9a7820d0-0ff2-4451-b655-682cec15cbd2',
+ messageId: 'ff90d62e-a6e3-4e23-af20-03b4a249ef48',
+ timestamp: '2021-06-25T14:29:52.911+05:30',
+ receivedAt: '2021-06-25T14:29:52.911+05:30',
+ request_ip: '[::1]',
+ anonymousId: '1585ea2f-dddc-4d23-935f-c1196405d61e',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-06-25T08:59:52.891Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.aptrinsic.com/v1/users/stanley-kubrick',
+ userId: '',
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'stanley@kubrick.com',
+ gender: 'MALE',
+ title: 'Director/Film Maker',
+ score: 100,
+ location: {
+ countryName: 'USA',
+ countryCode: 'US',
+ },
+ firstName: 'Stanley',
+ lastName: 'Kubrick',
+ customAttributes: {
+ hobby: 'Making films. Being a genius',
+ },
+ propertyKeys: ['AP-SAMPLE-2'],
+ type: 'USER',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/gainsight_px/router/data.ts b/test/integrations/destinations/gainsight_px/router/data.ts
new file mode 100644
index 00000000000..1b3d5be8756
--- /dev/null
+++ b/test/integrations/destinations/gainsight_px/router/data.ts
@@ -0,0 +1,619 @@
+const metadata = {
+ userId: '9a7820d0-0ff2-4451-b655-682cec15cbd2',
+ jobId: 1,
+ sourceId: '1s9eG8UCer6YSKsD8ZlQCyLa3pj',
+ destinationId: 'desId2',
+ attemptNum: 0,
+ receivedAt: '2021-06-25T14:29:52.911+05:30',
+ createdAt: '2021-06-25T08:59:56.329Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+};
+const destination2 = {
+ ID: 'desId2',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: 'destDef1',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [
+ { from: 'LAST_INVOICE_DATE', to: 'last_invoice_date' },
+ { from: 'LAST_INVOICE_PLAN', to: 'last_invoice_plan' },
+ { from: 'LANGUAGE', to: 'language' },
+ { from: 'REGION', to: 'region2' },
+ { from: 'LAST_INVOICE_CURRENCY', to: 'last_invoice_currency' },
+ { from: 'IBR_PLAN', to: 'ibr_plan' },
+ { from: 'WH_COUNTRY', to: 'wh_country' },
+ { from: 'inboxready_signup_date', to: 'inboxready_signup_date' },
+ { from: 'gpt_setup', to: 'gpt_setup' },
+ ],
+ oneTrustCookieCategories: [],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [{ from: 'kubrickTest', to: 'value' }],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [{ from: 'hobbyCustomField', to: 'hobby' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+};
+
+export const data = [
+ {
+ name: 'gainsight_px',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-06-25T08:59:52.891Z',
+ userId: 'stanley-kubrick',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ title: 'Test',
+ search: '',
+ path: 'index.html',
+ url: 'http://127.0.0.1:3003/index.html',
+ tab_url: 'http://127.0.0.1:3003/index.html',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ width: 1920,
+ height: 1080,
+ density: 1,
+ innerWidth: 1920,
+ innerHeight: 436,
+ },
+ traits: {
+ name: 'Stanley Kubrick',
+ email: 'stanley@kubrick.com',
+ score: 100,
+ title: 'Director/Film Maker',
+ gender: 'Male',
+ countryCode: 'US',
+ countryName: 'USA',
+ hobbyCustomField: 'Making films. Being a genius',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
+ },
+ rudderId: '9a7820d0-0ff2-4451-b655-682cec15cbd2',
+ messageId: 'ff90d62e-a6e3-4e23-af20-03b4a249ef48',
+ timestamp: '2021-06-25T14:29:52.911+05:30',
+ receivedAt: '2021-06-25T14:29:52.911+05:30',
+ request_ip: '[::1]',
+ anonymousId: '1585ea2f-dddc-4d23-935f-c1196405d61e',
+ integrations: { All: true },
+ originalTimestamp: '2021-06-25T08:59:52.891Z',
+ },
+ metadata: {
+ userId: '9a7820d0-0ff2-4451-b655-682cec15cbd2',
+ jobId: 1,
+ sourceId: '1s9eG8UCer6YSKsD8ZlQCyLa3pj',
+ destinationId: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ attemptNum: 0,
+ receivedAt: '2021-06-25T14:29:52.911+05:30',
+ createdAt: '2021-06-25T08:59:56.329Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ destination: {
+ ID: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: '1uLuOdwPCqtei55ZKXewwPhjQPf',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [{ from: 'cultureCustomField', to: 'culture' }],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [{ from: 'kubrickTest', to: 'value' }],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [{ from: 'hobbyCustomField', to: 'hobby' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ type: 'track',
+ event: 'nested test2',
+ sentAt: '2021-06-26T10:41:22.316Z',
+ userId: 'adifhas9734',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ path: '/Users/anurajguha/workspace/simple-html-test/index.html',
+ title: 'Test',
+ search: '',
+ tab_url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ referrer: '$direct',
+ initial_referrer: '$direct',
+ referring_domain: '',
+ initial_referring_domain: '',
+ },
+ locale: 'en-GB',
+ screen: {
+ width: 1920,
+ height: 1080,
+ density: 1,
+ innerWidth: 1920,
+ innerHeight: 585,
+ },
+ traits: {
+ name: 'Update test unique',
+ phone: '9900990899',
+ lastname: 'user6',
+ firstname: 'test',
+ previousCompany: 'testprevCompany2',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
+ },
+ rudderId: 'a27a8a8a-9e81-4898-beeb-e6041fc1552d',
+ messageId: '595dae36-5e4f-4feb-a2e4-8a7849615d38',
+ timestamp: '2021-06-26T16:11:22.335+05:30',
+ properties: {
+ array: [1, 2, 3],
+ nested: { json: 'test' },
+ status: 'testing',
+ description: 'Example track call',
+ fullyNested: [
+ { a: 1, b: 2 },
+ { a: 1, b: [1, 2, 3] },
+ ],
+ },
+ receivedAt: '2021-06-26T16:11:22.335+05:30',
+ request_ip: '[::1]',
+ anonymousId: '1585ea2f-dddc-4d23-935f-c1196405d61e',
+ integrations: { All: true },
+ originalTimestamp: '2021-06-26T10:41:22.316Z',
+ },
+ metadata: {
+ userId: 'a27a8a8a-9e81-4898-beeb-e6041fc1552d',
+ jobId: 2,
+ sourceId: '1s9eG8UCer6YSKsD8ZlQCyLa3pj',
+ destinationId: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ attemptNum: 0,
+ receivedAt: '2021-06-26T16:11:22.335+05:30',
+ createdAt: '2021-06-26T10:41:24.126Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ destination: {
+ ID: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: '1uLuOdwPCqtei55ZKXewwPhjQPf',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [{ from: 'cultureCustomField', to: 'culture' }],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [{ from: 'kubrickTest', to: 'value' }],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [{ from: 'hobbyCustomField', to: 'hobby' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ ],
+ destType: 'gainsight_px',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.aptrinsic.com/v1/users/stanley-kubrick',
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'stanley@kubrick.com',
+ gender: 'MALE',
+ title: 'Director/Film Maker',
+ score: 100,
+ location: { countryName: 'USA', countryCode: 'US' },
+ firstName: 'Stanley',
+ lastName: 'Kubrick',
+ customAttributes: { hobby: 'Making films. Being a genius' },
+ propertyKeys: ['AP-SAMPLE-2'],
+ type: 'USER',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ userId: '9a7820d0-0ff2-4451-b655-682cec15cbd2',
+ jobId: 1,
+ sourceId: '1s9eG8UCer6YSKsD8ZlQCyLa3pj',
+ destinationId: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ attemptNum: 0,
+ receivedAt: '2021-06-25T14:29:52.911+05:30',
+ createdAt: '2021-06-25T08:59:56.329Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: '1uLuOdwPCqtei55ZKXewwPhjQPf',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [{ from: 'cultureCustomField', to: 'culture' }],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [{ from: 'kubrickTest', to: 'value' }],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [{ from: 'hobbyCustomField', to: 'hobby' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.aptrinsic.com/v1/events/custom',
+ headers: {
+ 'X-APTRINSIC-API-KEY': 'sample-api-key',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identifyId: 'adifhas9734',
+ eventName: 'nested test2',
+ date: 1624704082335,
+ attributes: {
+ array: '[1,2,3]',
+ nested: '{"json":"test"}',
+ status: 'testing',
+ description: 'Example track call',
+ fullyNested: '[{"a":1,"b":2},{"a":1,"b":[1,2,3]}]',
+ },
+ url: 'file:///Users/anurajguha/workspace/simple-html-test/index.html',
+ referrer: '$direct',
+ propertyKey: 'AP-SAMPLE-2',
+ userType: 'USER',
+ globalContext: { kubrickTest: 'value' },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ userId: 'a27a8a8a-9e81-4898-beeb-e6041fc1552d',
+ jobId: 2,
+ sourceId: '1s9eG8UCer6YSKsD8ZlQCyLa3pj',
+ destinationId: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ attemptNum: 0,
+ receivedAt: '2021-06-26T16:11:22.335+05:30',
+ createdAt: '2021-06-26T10:41:24.126Z',
+ firstAttemptedAt: '',
+ transformAt: 'router',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1uLy1tqsoo9RhL1zLiqLQTKBIKL',
+ Name: 'gainsight-px-dest',
+ DestinationDefinition: {
+ ID: '1uLuOdwPCqtei55ZKXewwPhjQPf',
+ Name: 'GAINSIGHT_PX',
+ DisplayName: 'Gainsight PX',
+ Config: {
+ destConfig: {
+ defaultConfig: [
+ 'apiKey',
+ 'productTagKey',
+ 'userAttributeMap',
+ 'accountAttributeMap',
+ 'globalContextMap',
+ ],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: ['apiKey', 'productTagKey'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ 'flutter',
+ ],
+ transformAt: 'router',
+ transformAtV1: 'router',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ accountAttributeMap: [{ from: 'cultureCustomField', to: 'culture' }],
+ apiKey: 'sample-api-key',
+ eventDelivery: false,
+ eventDeliveryTS: 1624472902670,
+ globalContextMap: [{ from: 'kubrickTest', to: 'value' }],
+ productTagKey: 'AP-SAMPLE-2',
+ userAttributeMap: [{ from: 'hobbyCustomField', to: 'hobby' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'gainsight_px',
+ description: 'Test 1: Group call -- AxiosError thrown',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'group',
+ sentAt: '2024-02-16T06:00:54.075Z',
+ traits: {
+ name: ',sleep(100)',
+ REGION: 'MEA',
+ USERID: 'myUId',
+ groupId: 'myGId',
+ IBR_PLAN: 'free_ir',
+ LANGUAGE: 'EN',
+ gpt_setup: false,
+ ACCOUNT_ID: 'myGId',
+ WH_COUNTRY: 'MA',
+ LAST_INVOICE_DATE: 1706810675000,
+ LAST_INVOICE_PLAN: 'foundation_trial',
+ LAST_INVOICE_CURRENCY: 'USD',
+ inboxready_signup_date: 1680254544705,
+ },
+ userId: 'myUId',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_run_id: 'cn7fjonu4d9b3u706u2g',
+ task_run_id: 'cn7fjonu4d9b3u706u3g',
+ },
+ },
+ recordId: '111111',
+ rudderId: 'dummy-rudder-id',
+ timestamp: '2024-02-16T06:00:52.581Z',
+ receivedAt: '2024-02-16T06:00:52.582Z',
+ request_ip: '10.7.150.126',
+ anonymousId: 'myUId',
+ integrations: { limitAPIForGroup: true },
+ originalTimestamp: '2024-02-16T06:00:54.075Z',
+ },
+ metadata,
+ destination: destination2,
+ },
+ ],
+ destType: 'gainsight_px',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ error:
+ '{"message":"error while fetching user: \\"403403 Forbidden\\"","destinationResponse":"403403 Forbidden"}',
+ statTags: {
+ destType: 'GAINSIGHT_PX',
+ destinationId: destination2.ID,
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 403,
+ metadata: [metadata],
+ batched: false,
+ destination: destination2,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/gcs_datalake/processor/data.ts b/test/integrations/destinations/gcs_datalake/processor/data.ts
index 2148d5a3e6b..46c77887091 100644
--- a/test/integrations/destinations/gcs_datalake/processor/data.ts
+++ b/test/integrations/destinations/gcs_datalake/processor/data.ts
@@ -1,191 +1,194 @@
export const data = [
- {
- name: 'gcs_datalake',
- description: 'No Message type',
- feature: 'processor',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: [
- {
- "message": {
- "receivedAt": "2023-09-29T15:07:16.650Z",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "email": "test@rudderstack.com"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "type": "track",
- "messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "originalTimestamp": "2019-10-14T11:15:18.300Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "event": "Product List Clicked",
- "properties": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "products": []
- },
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T11:15:53.296Z"
- },
- "destination": {
- "Config": {
- "bucketName": "ps-data-mdm-prod-rudderstack",
- "prefix": "",
- "namespace": "",
- "credentials": "randomcreds",
- "syncFrequency": "30",
- "tableSuffix": "",
- "timeWindowLayout": "2006/01/02/15"
- },
- "Enabled": true
- }
- },
- ],
- method: 'POST',
+ {
+ name: 'gcs_datalake',
+ description: 'No Message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ receivedAt: '2023-09-29T15:07:16.650Z',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Product List Clicked',
+ properties: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ products: [],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
},
- pathSuffix: '',
- },
- output: {
- response: {
- status: 200,
- body: [
- {
- "output": {
- "metadata": {
- "table": "tracks",
- "columns": {
- "uuid_ts": "datetime",
- "context_app_build": "string",
- "context_app_name": "string",
- "context_app_namespace": "string",
- "context_app_version": "string",
- "context_traits_email": "string",
- "context_library_name": "string",
- "context_library_version": "string",
- "context_user_agent": "string",
- "context_locale": "string",
- "context_screen_density": "int",
- "event_text": "string",
- "id": "string",
- "anonymous_id": "string",
- "user_id": "string",
- "sent_at": "datetime",
- "received_at": "datetime",
- "original_timestamp": "datetime",
- "channel": "string",
- "event": "string"
- },
- "receivedAt": "2023-09-29T15:07:16.650Z"
- },
- "data": {
- "context_app_build": "1.0.0",
- "context_app_name": "RudderLabs JavaScript SDK",
- "context_app_namespace": "com.rudderlabs.javascript",
- "context_app_version": "1.0.0",
- "context_traits_email": "test@rudderstack.com",
- "context_library_name": "RudderLabs JavaScript SDK",
- "context_library_version": "1.0.0",
- "context_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "context_locale": "en-US",
- "context_screen_density": 2,
- "event_text": "Product List Clicked",
- "id": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "anonymous_id": "00000000000000000000000000",
- "user_id": "12345",
- "sent_at": "2019-10-14T11:15:53.296Z",
- "received_at": "2023-09-29T15:07:16.650Z",
- "original_timestamp": "2019-10-14T11:15:18.300Z",
- "channel": "web",
- "event": "product_list_clicked"
- },
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "metadata": {
- "table": "product_list_clicked",
- "columns": {
- "uuid_ts": "datetime",
- "list_id": "string",
- "category": "string",
- "context_app_build": "string",
- "context_app_name": "string",
- "context_app_namespace": "string",
- "context_app_version": "string",
- "context_traits_email": "string",
- "context_library_name": "string",
- "context_library_version": "string",
- "context_user_agent": "string",
- "context_locale": "string",
- "context_screen_density": "int",
- "event_text": "string",
- "id": "string",
- "anonymous_id": "string",
- "user_id": "string",
- "sent_at": "datetime",
- "received_at": "datetime",
- "original_timestamp": "datetime",
- "channel": "string",
- "event": "string"
- },
- "receivedAt": "2023-09-29T15:07:16.650Z"
- },
- "data": {
- "list_id": "Sample Product List",
- "category": "Sample Product List",
- "context_app_build": "1.0.0",
- "context_app_name": "RudderLabs JavaScript SDK",
- "context_app_namespace": "com.rudderlabs.javascript",
- "context_app_version": "1.0.0",
- "context_traits_email": "test@rudderstack.com",
- "context_library_name": "RudderLabs JavaScript SDK",
- "context_library_version": "1.0.0",
- "context_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "context_locale": "en-US",
- "context_screen_density": 2,
- "event_text": "Product List Clicked",
- "id": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
- "anonymous_id": "00000000000000000000000000",
- "user_id": "12345",
- "sent_at": "2019-10-14T11:15:53.296Z",
- "received_at": "2023-09-29T15:07:16.650Z",
- "original_timestamp": "2019-10-14T11:15:18.300Z",
- "channel": "web",
- "event": "product_list_clicked"
- },
- "userId": ""
- },
- "statusCode": 200
- }
- ],
+ destination: {
+ Config: {
+ bucketName: 'ps-data-mdm-prod-rudderstack',
+ prefix: '',
+ namespace: '',
+ credentials: 'randomcreds',
+ syncFrequency: '30',
+ tableSuffix: '',
+ timeWindowLayout: '2006/01/02/15',
+ },
+ Enabled: true,
},
- },
- }
+ },
+ ],
+ method: 'POST',
+ },
+ pathSuffix: '',
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ metadata: {
+ table: 'tracks',
+ columns: {
+ uuid_ts: 'datetime',
+ context_app_build: 'string',
+ context_app_name: 'string',
+ context_app_namespace: 'string',
+ context_app_version: 'string',
+ context_traits_email: 'string',
+ context_library_name: 'string',
+ context_library_version: 'string',
+ context_user_agent: 'string',
+ context_locale: 'string',
+ context_screen_density: 'int',
+ event_text: 'string',
+ id: 'string',
+ anonymous_id: 'string',
+ user_id: 'string',
+ sent_at: 'datetime',
+ received_at: 'datetime',
+ original_timestamp: 'datetime',
+ channel: 'string',
+ event: 'string',
+ },
+ receivedAt: '2023-09-29T15:07:16.650Z',
+ },
+ data: {
+ context_app_build: '1.0.0',
+ context_app_name: 'RudderLabs JavaScript SDK',
+ context_app_namespace: 'com.rudderlabs.javascript',
+ context_app_version: '1.0.0',
+ context_traits_email: 'test@rudderstack.com',
+ context_library_name: 'RudderLabs JavaScript SDK',
+ context_library_version: '1.0.0',
+ context_user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ context_locale: 'en-US',
+ context_screen_density: 2,
+ event_text: 'Product List Clicked',
+ id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymous_id: '00000000000000000000000000',
+ user_id: '12345',
+ sent_at: '2019-10-14T11:15:53.296Z',
+ received_at: '2023-09-29T15:07:16.650Z',
+ original_timestamp: '2019-10-14T11:15:18.300Z',
+ channel: 'web',
+ event: 'product_list_clicked',
+ },
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ metadata: {
+ table: 'product_list_clicked',
+ columns: {
+ uuid_ts: 'datetime',
+ list_id: 'string',
+ category: 'string',
+ context_app_build: 'string',
+ context_app_name: 'string',
+ context_app_namespace: 'string',
+ context_app_version: 'string',
+ context_traits_email: 'string',
+ context_library_name: 'string',
+ context_library_version: 'string',
+ context_user_agent: 'string',
+ context_locale: 'string',
+ context_screen_density: 'int',
+ event_text: 'string',
+ id: 'string',
+ anonymous_id: 'string',
+ user_id: 'string',
+ sent_at: 'datetime',
+ received_at: 'datetime',
+ original_timestamp: 'datetime',
+ channel: 'string',
+ event: 'string',
+ },
+ receivedAt: '2023-09-29T15:07:16.650Z',
+ },
+ data: {
+ list_id: 'Sample Product List',
+ category: 'Sample Product List',
+ context_app_build: '1.0.0',
+ context_app_name: 'RudderLabs JavaScript SDK',
+ context_app_namespace: 'com.rudderlabs.javascript',
+ context_app_version: '1.0.0',
+ context_traits_email: 'test@rudderstack.com',
+ context_library_name: 'RudderLabs JavaScript SDK',
+ context_library_version: '1.0.0',
+ context_user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ context_locale: 'en-US',
+ context_screen_density: 2,
+ event_text: 'Product List Clicked',
+ id: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ anonymous_id: '00000000000000000000000000',
+ user_id: '12345',
+ sent_at: '2019-10-14T11:15:53.296Z',
+ received_at: '2023-09-29T15:07:16.650Z',
+ original_timestamp: '2019-10-14T11:15:18.300Z',
+ channel: 'web',
+ event: 'product_list_clicked',
+ },
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/gladly/router/data.ts b/test/integrations/destinations/gladly/router/data.ts
index 413c92e2477..462edd9772b 100644
--- a/test/integrations/destinations/gladly/router/data.ts
+++ b/test/integrations/destinations/gladly/router/data.ts
@@ -22,32 +22,21 @@ export const data = [
lastName: 'Rudderlabs',
address: 'california usa',
},
- externalId: [
- {
- id: 'user@1',
- type: 'GladlyCustomerId',
- },
- ],
+ externalId: [{ id: 'user@1', type: 'GladlyCustomerId' }],
},
type: 'identify',
originalTimestamp: '2023-11-10T14:42:44.724Z',
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
message: {
@@ -62,32 +51,21 @@ export const data = [
lastName: 'Rudderstack',
address: 'New York, USA',
},
- externalId: [
- {
- id: 'user@2',
- type: 'GladlyCustomerId',
- },
- ],
+ externalId: [{ id: 'user@2', type: 'GladlyCustomerId' }],
},
type: 'identify',
originalTimestamp: '2023-11-10T14:42:44.724Z',
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
message: {
@@ -100,32 +78,21 @@ export const data = [
lastName: 'Rudderstack',
address: 'New York, USA',
},
- externalId: [
- {
- id: 'user@3',
- type: 'GladlyCustomerId',
- },
- ],
+ externalId: [{ id: 'user@3', type: 'GladlyCustomerId' }],
},
type: 'identify',
originalTimestamp: '2023-11-10T14:42:44.724Z',
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
],
destType: 'gladly',
@@ -145,21 +112,11 @@ export const data = [
FORM: {},
JSON: {
address: 'california usa',
- customAttributes: {
- age: 23,
- },
- emails: [
- {
- original: 'test@rudderlabs.com',
- },
- ],
+ customAttributes: { age: 23 },
+ emails: [{ original: 'test@rudderlabs.com' }],
externalCustomerId: 'externalCustomer@1',
id: 'user@1',
- phones: [
- {
- original: '+91 9999999999',
- },
- ],
+ phones: [{ original: '+91 9999999999' }],
},
JSON_ARRAY: {},
XML: {},
@@ -181,17 +138,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
@@ -201,20 +150,10 @@ export const data = [
FORM: {},
JSON: {
address: 'New York, USA',
- customAttributes: {
- age: 23,
- },
- emails: [
- {
- original: 'test+2@rudderlabs.com',
- },
- ],
+ customAttributes: { age: 23 },
+ emails: [{ original: 'test+2@rudderlabs.com' }],
externalCustomerId: 'externalCustomer@2',
- phones: [
- {
- original: '+91 9999999998',
- },
- ],
+ phones: [{ original: '+91 9999999998' }],
},
JSON_ARRAY: {},
XML: {},
@@ -236,17 +175,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
{
@@ -257,11 +188,7 @@ export const data = [
JSON: {
address: 'New York, USA',
externalCustomerId: 'externalCustomer@3',
- phones: [
- {
- original: '+91 9999999988',
- },
- ],
+ phones: [{ original: '+91 9999999988' }],
},
JSON_ARRAY: {},
XML: {},
@@ -283,17 +210,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
],
@@ -316,12 +235,7 @@ export const data = [
userId: 'externalCustomer@1',
channel: 'web',
context: {
- externalId: [
- {
- id: 'externalCustomer@1',
- identifierType: 'externalCustomerId',
- },
- ],
+ externalId: [{ id: 'externalCustomer@1', identifierType: 'externalCustomerId' }],
mappedToDestination: true,
},
traits: {
@@ -337,32 +251,21 @@ export const data = [
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
message: {
userId: 'externalCustomer@2',
channel: 'web',
context: {
- externalId: [
- {
- id: 'externalCustomer@2',
- identifierType: 'externalCustomerId',
- },
- ],
+ externalId: [{ id: 'externalCustomer@2', identifierType: 'externalCustomerId' }],
mappedToDestination: true,
},
traits: {
@@ -378,32 +281,21 @@ export const data = [
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
message: {
userId: 'externalCustomer@3',
channel: 'web',
context: {
- externalId: [
- {
- id: 'externalCustomer@3',
- identifierType: 'externalCustomerId',
- },
- ],
+ externalId: [{ id: 'externalCustomer@3', identifierType: 'externalCustomerId' }],
mappedToDestination: true,
},
traits: {
@@ -418,20 +310,14 @@ export const data = [
timestamp: '2023-11-22T10:12:44.75705:30',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
apiToken: 'testApiToken',
userName: 'testUserName',
domain: 'rudderlabs.us-uat.gladly.qa',
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
],
destType: 'gladly',
@@ -451,18 +337,10 @@ export const data = [
FORM: {},
JSON: {
address: 'california usa',
- emails: [
- {
- original: 'test@rudderlabs.com',
- },
- ],
+ emails: [{ original: 'test@rudderlabs.com' }],
externalCustomerId: 'externalCustomer@1',
id: 'user@1',
- phones: [
- {
- original: '+91 9999999999',
- },
- ],
+ phones: [{ original: '+91 9999999999' }],
},
JSON_ARRAY: {},
XML: {},
@@ -484,17 +362,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
@@ -504,17 +374,9 @@ export const data = [
FORM: {},
JSON: {
address: 'New York, USA',
- emails: [
- {
- original: 'test+2@rudderlabs.com',
- },
- ],
+ emails: [{ original: 'test+2@rudderlabs.com' }],
externalCustomerId: 'externalCustomer@2',
- phones: [
- {
- original: '+91 9999999998',
- },
- ],
+ phones: [{ original: '+91 9999999998' }],
},
JSON_ARRAY: {},
XML: {},
@@ -536,17 +398,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
{
@@ -557,11 +411,7 @@ export const data = [
JSON: {
address: 'New York, USA',
externalCustomerId: 'externalCustomer@3',
- phones: [
- {
- original: '+91 9999999988',
- },
- ],
+ phones: [{ original: '+91 9999999988' }],
},
JSON_ARRAY: {},
XML: {},
@@ -583,17 +433,9 @@ export const data = [
domain: 'rudderlabs.us-uat.gladly.qa',
userName: 'testUserName',
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
],
diff --git a/test/integrations/destinations/google_adwords_enhanced_conversions/dataDelivery/data.ts b/test/integrations/destinations/google_adwords_enhanced_conversions/dataDelivery/data.ts
index c9bfac233dd..b544baaebdc 100644
--- a/test/integrations/destinations/google_adwords_enhanced_conversions/dataDelivery/data.ts
+++ b/test/integrations/destinations/google_adwords_enhanced_conversions/dataDelivery/data.ts
@@ -1,290 +1,307 @@
export const data = [
- {
- name: 'google_adwords_enhanced_conversions',
- description: 'Test 0',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "0987654321"
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ params: {
+ event: 'Product Added',
+ customerId: '1234567890',
+ destination: 'google_adwords_enhanced_conversions',
+ },
+ body: {
+ JSON: {
+ partialFailure: true,
+ conversionAdjustments: [
+ {
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currency: 'INR',
+ },
+ order_id: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
},
- "params": {
- "event": "Product Added",
- "customerId": "1234567890",
- "destination": "google_adwords_enhanced_conversions"
- },
- "body": {
- "JSON": {
- "partialFailure": true,
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currency": "INR"
- },
- "order_id": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ ],
+ adjustmentType: 'ENHANCEMENT',
},
- method: 'POST',
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 401,
- body: {
- output: {
- "message": "\"\"Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.\" during Google_adwords_enhanced_conversions response transformation\"",
- "authErrorCategory": "REFRESH_TOKEN",
- "destinationResponse": [
- {
- "error": {
- "code": 401,
- "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
- "status": "UNAUTHENTICATED"
- }
- }
- ],
- "statTags": {
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- },
- "status": 401
- }
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ message:
+ '""Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project." during Google_adwords_enhanced_conversions response transformation"',
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: [
+ {
+ error: {
+ code: 401,
+ message:
+ 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ status: 'UNAUTHENTICATED',
},
+ },
+ ],
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
+ status: 401,
+ },
},
+ },
},
- {
- name: 'google_adwords_enhanced_conversions',
- description: 'Test 1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567899:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "0987654321"
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567899:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ params: {
+ event: 'Product Added',
+ customerId: '1234567899',
+ destination: 'google_adwords_enhanced_conversions',
+ },
+ body: {
+ JSON: {
+ partialFailure: true,
+ conversionAdjustments: [
+ {
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currency: 'INR',
+ },
+ order_id: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
},
- "params": {
- "event": "Product Added",
- "customerId": "1234567899",
- "destination": "google_adwords_enhanced_conversions"
- },
- "body": {
- "JSON": {
- "partialFailure": true,
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currency": "INR"
- },
- "order_id": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ ],
+ adjustmentType: 'ENHANCEMENT',
},
- method: 'POST',
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 200,
- body: {
- "output": {
- "destinationResponse": {
- "response": [
- {
- "results": [
- {
- "adjustmentDateTime": "2021-01-01 12:32:45-08:00",
- "adjustmentType": "ENHANCEMENT",
- "conversionAction": "customers/7693729833/conversionActions/874224905",
- "gclidDateTimePair": {
- "conversionDateTime": "2021-01-01 12:32:45-08:00",
- "gclid": "1234",
- },
- "orderId": "12345",
- },
- ],
- },
- ],
- "status": 200,
- },
- "message": "Request Processed Successfully",
- "status": 200,
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ destinationResponse: {
+ response: [
+ {
+ results: [
+ {
+ adjustmentDateTime: '2021-01-01 12:32:45-08:00',
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/7693729833/conversionActions/874224905',
+ gclidDateTimePair: {
+ conversionDateTime: '2021-01-01 12:32:45-08:00',
+ gclid: '1234',
+ },
+ orderId: '12345',
},
+ ],
},
+ ],
+ status: 200,
},
+ message: 'Request Processed Successfully',
+ status: 200,
+ },
},
+ },
},
- {
- name: 'google_adwords_enhanced_conversions',
- description: 'Test 2',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567891:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "0987654321"
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567891:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ params: {
+ event: 'Product Added',
+ customerId: '1234567891',
+ destination: 'google_adwords_enhanced_conversions',
+ },
+ body: {
+ JSON: {
+ partialFailure: true,
+ conversionAdjustments: [
+ {
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currency: 'INR',
+ },
+ order_id: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
},
- "params": {
- "event": "Product Added",
- "customerId": "1234567891",
- "destination": "google_adwords_enhanced_conversions"
- },
- "body": {
- "JSON": {
- "partialFailure": true,
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currency": "INR"
- },
- "order_id": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ ],
+ adjustmentType: 'ENHANCEMENT',
},
- method: 'POST',
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 400,
- body: {
- "output": {
- "destinationResponse": [
- {
- results: [
- {
- "conversionAction": {
- "id": 123434342,
- }
- }
- ]
- }
- ],
- "message": "\" during Google_adwords_enhanced_conversions response transformation",
- "statTags": {
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "destinationId": "Non-determininable",
- "errorCategory": "network",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination",
- "workspaceId": "Non-determininable",
- },
- "status": 400,
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: [
+ {
+ results: [
+ {
+ conversionAction: {
+ id: 123434342,
},
- },
+ },
+ ],
+ },
+ ],
+ message: '" during Google_adwords_enhanced_conversions response transformation',
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
},
+ status: 400,
+ },
},
- }
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/google_adwords_enhanced_conversions/network.ts b/test/integrations/destinations/google_adwords_enhanced_conversions/network.ts
index ca49ea30ab4..672cd73bf7b 100644
--- a/test/integrations/destinations/google_adwords_enhanced_conversions/network.ts
+++ b/test/integrations/destinations/google_adwords_enhanced_conversions/network.ts
@@ -1,236 +1,276 @@
export const networkCallsData = [
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567890/googleAds:searchStream',
- data: {
- query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`,
- },
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
- },
- method: 'POST',
- },
- httpRes: {
- "data": [
- {
- "error": {
- "code": 401,
- "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
- "status": "UNAUTHENTICATED"
- }
- }
- ],
- "status": 401
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567890/googleAds:searchStream',
+ data: {
+ query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`,
+ },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ error: {
+ code: 401,
+ message:
+ 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ status: 'UNAUTHENTICATED',
+ },
},
+ ],
+ status: 401,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567899/googleAds:searchStream',
- data: {
- query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`
- },
- params: { destination: 'google_adwords_enhanced_conversion' },
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567899/googleAds:searchStream',
+ data: {
+ query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`,
+ },
+ params: { destination: 'google_adwords_enhanced_conversion' },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ results: [
+ {
+ conversionAction: {
+ id: 123434342,
+ },
},
- method: 'POST',
- },
- httpRes: {
- data: [{
- results: [{
- conversionAction: {
- id: 123434342
- }
- }]
- }],
- status: 200,
+ ],
},
+ ],
+ status: 200,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567899:uploadConversionAdjustments',
- data: {
- conversionAdjustments: [{
- adjustmentDateTime: '2022-01-01 12:32:45-08:00',
- adjustmentType: 'ENHANCEMENT',
- conversionAction: 'customers/1234567899/conversionActions/123434342',
- gclidDateTimePair: {
- conversionDateTime: '2022-01-01 12:32:45-08:00',
- gclid: 'gclid1234'
- },
- order_id: '10000',
- restatementValue: { adjustedValue: 10, currency: 'INR' },
- userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
- userIdentifiers: [{
- addressInfo: {
- hashedFirstName: 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
- hashedLastName: '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
- state: 'UK',
- city: 'London',
- hashedStreetAddress: '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550'
- }
- }]
- }],
- partialFailure: true
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567899:uploadConversionAdjustments',
+ data: {
+ conversionAdjustments: [
+ {
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/1234567899/conversionActions/123434342',
+ gclidDateTimePair: {
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ gclid: 'gclid1234',
},
- params: { destination: 'google_adwords_enhanced_conversion' },
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
+ order_id: '10000',
+ restatementValue: { adjustedValue: 10, currency: 'INR' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
+ },
+ ],
+ },
+ ],
+ partialFailure: true,
+ },
+ params: { destination: 'google_adwords_enhanced_conversion' },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ results: [
+ {
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/7693729833/conversionActions/874224905',
+ adjustmentDateTime: '2021-01-01 12:32:45-08:00',
+ gclidDateTimePair: {
+ gclid: '1234',
+ conversionDateTime: '2021-01-01 12:32:45-08:00',
+ },
+ orderId: '12345',
},
- method: 'POST',
- },
- httpRes: {
- data: [{
- results: [{
- "adjustmentType": "ENHANCEMENT",
- "conversionAction": "customers/7693729833/conversionActions/874224905",
- "adjustmentDateTime": "2021-01-01 12:32:45-08:00",
- "gclidDateTimePair": {
- "gclid": "1234",
- "conversionDateTime": "2021-01-01 12:32:45-08:00"
- },
- "orderId": "12345"
- }]
- }],
- status: 200,
+ ],
},
+ ],
+ status: 200,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567891/googleAds:searchStream',
- data: {
- query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`
- },
- params: { destination: 'google_adwords_enhanced_conversion' },
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567891/googleAds:searchStream',
+ data: {
+ query: `SELECT conversion_action.id FROM conversion_action WHERE conversion_action.name = 'Product Added'`,
+ },
+ params: { destination: 'google_adwords_enhanced_conversion' },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ results: [
+ {
+ conversionAction: {
+ id: 123434342,
+ },
},
- method: 'POST',
- },
- httpRes: {
- data: [{
- results: [{
- conversionAction: {
- id: 123434342
- }
- }]
- }],
- status: 200,
+ ],
},
+ ],
+ status: 200,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567891:uploadConversionAdjustments',
- data: {
- conversionAdjustments: [{
- adjustmentDateTime: '2022-01-01 12:32:45-08:00',
- adjustmentType: 'ENHANCEMENT',
- conversionAction: 'customers/1234567891/conversionActions/123434342',
- gclidDateTimePair: {
- conversionDateTime: '2022-01-01 12:32:45-08:00',
- gclid: 'gclid1234'
- },
- order_id: '10000',
- restatementValue: { adjustedValue: 10, currency: 'INR' },
- userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
- userIdentifiers: [{
- addressInfo: {
- hashedFirstName: 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
- hashedLastName: '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
- state: 'UK',
- city: 'London',
- hashedStreetAddress: '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550'
- }
- }]
- }],
- partialFailure: true
- },
- params: {
- destination: 'google_adwords_enhanced_conversion',
-
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567891:uploadConversionAdjustments',
+ data: {
+ conversionAdjustments: [
+ {
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/1234567891/conversionActions/123434342',
+ gclidDateTimePair: {
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ gclid: 'gclid1234',
},
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
+ order_id: '10000',
+ restatementValue: { adjustedValue: 10, currency: 'INR' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
+ },
+ ],
+ },
+ ],
+ partialFailure: true,
+ },
+ params: {
+ destination: 'google_adwords_enhanced_conversion',
+ },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ results: [
+ {
+ conversionAction: {
+ id: 123434342,
+ },
},
- method: 'POST',
- },
- httpRes: {
- data: [{
- results: [{
- conversionAction: {
- id: 123434342
- }
- }]
- }],
- status: 400,
+ ],
},
+ ],
+ status: 400,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/1234567891:uploadClickConversions',
- data: {
- conversionAdjustments: [{
- adjustmentDateTime: '2022-01-01 12:32:45-08:00',
- adjustmentType: 'ENHANCEMENT',
- conversionAction: 'customers/1234567891/conversionActions/123434342',
- gclidDateTimePair: {
- conversionDateTime: '2022-01-01 12:32:45-08:00',
- gclid: 'gclid1234'
- },
- order_id: '10000',
- restatementValue: { adjustedValue: 10, currency: 'INR' },
- userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
- userIdentifiers: [{
- addressInfo: {
- hashedFirstName: 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
- hashedLastName: '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
- state: 'UK',
- city: 'London',
- hashedStreetAddress: '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550'
- }
- }]
- }],
- partialFailure: true
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/1234567891:uploadClickConversions',
+ data: {
+ conversionAdjustments: [
+ {
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/1234567891/conversionActions/123434342',
+ gclidDateTimePair: {
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ gclid: 'gclid1234',
},
- params: {
- destination: 'google_adwords_enhanced_conversion',
-
- },
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- 'login-customer-id': '0987654321',
+ order_id: '10000',
+ restatementValue: { adjustedValue: 10, currency: 'INR' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
+ },
+ ],
+ },
+ ],
+ partialFailure: true,
+ },
+ params: {
+ destination: 'google_adwords_enhanced_conversion',
+ },
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '0987654321',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: [
+ {
+ results: [
+ {
+ conversionAction: {
+ id: 123434342,
+ },
},
- method: 'POST',
+ ],
},
- httpRes: {
- data: [{
- results: [{
- conversionAction: {
- id: 123434342
- }
- }]
- }],
- status: 400,
- },
- }
+ ],
+ status: 400,
+ },
+ },
];
-
-
-
diff --git a/test/integrations/destinations/google_adwords_enhanced_conversions/processor/data.ts b/test/integrations/destinations/google_adwords_enhanced_conversions/processor/data.ts
index 09a9b406f68..0a9542a5d5a 100644
--- a/test/integrations/destinations/google_adwords_enhanced_conversions/processor/data.ts
+++ b/test/integrations/destinations/google_adwords_enhanced_conversions/processor/data.ts
@@ -1,1694 +1,1726 @@
export const data = [
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "123-456-7890",
- "subAccount": true,
- "loginCustomerId": "123-456-7890",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "countryCode": "us",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "1234567890"
- },
- "params": {
- "event": "Page View",
- "customerId": "1234567890"
- },
- "body": {
- "JSON": {
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currencyCode": "INR"
- },
- "orderId": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe"
- },
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "countryCode": "us",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '123-456-7890',
+ subAccount: true,
+ loginCustomerId: '123-456-7890',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ countryCode: 'us',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '1234567890',
+ },
+ params: {
+ event: 'Page View',
+ customerId: '1234567890',
+ },
+ body: {
+ JSON: {
+ conversionAdjustments: [
{
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currencyCode: 'INR',
+ },
+ orderId: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe',
},
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Checkout Started",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ countryCode: 'us',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
},
- "statusCode": 400,
- "error": "Conversion named \"Checkout Started\" was not specified in the RudderStack destination configuration",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ ],
+ adjustmentType: 'ENHANCEMENT',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Product Added",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 400,
- "error": "Any of email, phone, firstName, lastName, city, street, countryCode, postalCode or streetAddress is required in traits.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Checkout Started',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "firstName": "John",
- "lastName": "Gomes",
- "address": {
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK",
- "country": "us"
- }
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Product Added",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currencyCode": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": "true",
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "11"
- },
- "params": {
- "event": "Product Added",
- "customerId": "1234567890"
- },
- "body": {
- "JSON": {
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currencyCode": "INR"
- },
- "orderId": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "countryCode": "us",
- "hashedStreetAddress": "b28c94b2195c8ed259f0b415aaee3f39b0b2920a4537611499fa044956917a21"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error:
+ 'Conversion named "Checkout Started" was not specified in the RudderStack destination configuration',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Product Added",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currencyCode": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "orderId": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 400,
- "error": "LoginCustomerId is required as subAccount is true.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Product Added',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "elizabeth"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 400,
- "error": "Message Type identify is not supported. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error:
+ 'Any of email, phone, firstName, lastName, city, street, countryCode, postalCode or streetAddress is required in traits.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": null
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": null
- },
- "statusCode": 500,
- "error": "OAuth - access token not found",
- "statTags": {
- "errorCategory": "platform",
- "errorType": "oAuthSecret",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ firstName: 'John',
+ lastName: 'Gomes',
+ address: {
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ country: 'us',
+ },
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Product Added',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currencyCode: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: 'true',
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '11',
+ },
+ params: {
+ event: 'Product Added',
+ customerId: '1234567890',
+ },
+ body: {
+ JSON: {
+ conversionAdjustments: [
{
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currencyCode: 'INR',
+ },
+ orderId: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ countryCode: 'us',
+ hashedStreetAddress:
+ 'b28c94b2195c8ed259f0b415aaee3f39b0b2920a4537611499fa044956917a21',
+ },
},
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "123-456-7890",
- "subAccount": true,
- "loginCustomerId": "123-456-7890",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "countryCode": "us",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Product Viewed",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "orde_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 400,
- "error": "Conversion named \"Product Viewed\" was not specified in the RudderStack destination configuration",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
+ ],
+ adjustmentType: 'ENHANCEMENT',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "requireHash": true,
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "123-456-7890",
- "subAccount": true,
- "loginCustomerId": "123-456-7890",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "countryCode": "us",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "1234567890"
- },
- "params": {
- "event": "Page View",
- "customerId": "1234567890"
- },
- "body": {
- "JSON": {
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currencyCode": "INR"
- },
- "orderId": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe"
- },
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "countryCode": "us",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Product Added',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currencyCode: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ orderId: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
- },
- "destination": {
- "Config": {
- "requireHash": false,
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "123-456-7890",
- "subAccount": true,
- "loginCustomerId": "123-456-7890",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "countryCode": "us",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error: 'LoginCustomerId is required as subAccount is true.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ type: 'identify',
+ traits: {
+ status: 'elizabeth',
+ },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error: 'Message Type identify is not supported. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: null,
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: null,
+ },
+ statusCode: 500,
+ error: 'OAuth - access token not found',
+ statTags: {
+ errorCategory: 'platform',
+ errorType: 'oAuthSecret',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '123-456-7890',
+ subAccount: true,
+ loginCustomerId: '123-456-7890',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ countryCode: 'us',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Product Viewed',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ orde_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error:
+ 'Conversion named "Product Viewed" was not specified in the RudderStack destination configuration',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ requireHash: true,
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '123-456-7890',
+ subAccount: true,
+ loginCustomerId: '123-456-7890',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ countryCode: 'us',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '1234567890',
+ },
+ params: {
+ event: 'Page View',
+ customerId: '1234567890',
+ },
+ body: {
+ JSON: {
+ conversionAdjustments: [
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "1234567890"
- },
- "params": {
- "event": "Page View",
- "customerId": "1234567890"
- },
- "body": {
- "JSON": {
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currencyCode": "INR"
- },
- "orderId": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "912382193"
- },
- {
- "addressInfo": {
- "hashedFirstName": "John",
- "hashedLastName": "Gomes",
- "state": "UK",
- "city": "London",
- "countryCode": "us",
- "hashedStreetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currencyCode: 'INR',
+ },
+ orderId: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe',
},
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ countryCode: 'us',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
+ },
},
- "statusCode": 200
- }
- ]
- }
- }
+ ],
+ adjustmentType: 'ENHANCEMENT',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ requireHash: false,
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '123-456-7890',
+ subAccount: true,
+ loginCustomerId: '123-456-7890',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ countryCode: 'us',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
},
- {
- "name": "google_adwords_enhanced_conversions",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '1234567890',
+ },
+ params: {
+ event: 'Page View',
+ customerId: '1234567890',
+ },
+ body: {
+ JSON: {
+ conversionAdjustments: [
{
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ },
+ restatementValue: {
+ adjustedValue: 10,
+ currencyCode: 'INR',
+ },
+ orderId: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ hashedPhoneNumber: '912382193',
},
- "destination": {
- "Config": {
- "requireHash": false,
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "123-456-7890",
- "subAccount": true,
- "loginCustomerId": "123-456-7890",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "countryCode": "us",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- }
+ {
+ addressInfo: {
+ hashedFirstName: 'John',
+ hashedLastName: 'Gomes',
+ state: 'UK',
+ city: 'London',
+ countryCode: 'us',
+ hashedStreetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
},
- "statusCode": 400,
- "error": "Missing required value from [\"properties.orderId\",\"properties.order_id\"]",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ ],
+ adjustmentType: 'ENHANCEMENT',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ destination: {
+ Config: {
+ requireHash: false,
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '123-456-7890',
+ subAccount: true,
+ loginCustomerId: '123-456-7890',
+ listOfConversions: [
+ {
+ conversions: 'Page View',
+ },
+ {
+ conversions: 'Product Added',
+ },
+ ],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ countryCode: 'us',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ },
+ statusCode: 400,
+ error: 'Missing required value from ["properties.orderId","properties.order_id"]',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/google_adwords_enhanced_conversions/router/data.ts b/test/integrations/destinations/google_adwords_enhanced_conversions/router/data.ts
index efaa0072e28..dff0f772d31 100644
--- a/test/integrations/destinations/google_adwords_enhanced_conversions/router/data.ts
+++ b/test/integrations/destinations/google_adwords_enhanced_conversions/router/data.ts
@@ -1,447 +1,508 @@
+const events = [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [{ conversions: 'Page View' }, { conversions: 'Product Added' }],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: { All: true },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '',
+ listOfConversions: [{ conversions: 'Page View' }, { conversions: 'Product Added' }],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ type: 'identify',
+ traits: { status: 'elizabeth' },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ {
+ metadata: { secret: {}, jobId: 3, userId: 'u1' },
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [{ conversions: 'Page View' }, { conversions: 'Product Added' }],
+ authStatus: 'active',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ phone: '912382193',
+ firstName: 'John',
+ lastName: 'Gomes',
+ city: 'London',
+ state: 'UK',
+ streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ event: 'Page View',
+ type: 'track',
+ messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
+ originalTimestamp: '2019-10-14T11:15:18.299Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ adjustedValue: '10',
+ currency: 'INR',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ partialFailure: true,
+ campaignId: '1',
+ templateId: '0',
+ order_id: 10000,
+ total: 1000,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ price: '19',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ quantity: '2',
+ },
+ {
+ product_id: '507f1f77bcf86cd7994390112',
+ sku: '45790-322',
+ name: 'Monopoly: 3rd Edition2',
+ price: '192',
+ quantity: 22,
+ position: '12',
+ category: 'Cars2',
+ url: 'https://www.example.com/product/path2',
+ image_url: 'https://www.example.com/product/path.jpg2',
+ },
+ ],
+ },
+ integrations: { All: true },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ },
+];
+
+const invalidRtTfCases = [
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 1 - should abort events, invalid router transform structure',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: events[0],
+ destType: 'google_adwords_enhanced_conversions',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ error: 'Invalid event array',
+ metadata: [
+ {
+ destType: 'google_adwords_enhanced_conversions',
+ },
+ ],
+ batched: false,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description:
+ 'Test 2 - should abort events, invalid router transform structure without destType in payload & empty object as input',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: {},
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ error: 'Invalid event array',
+ metadata: [
+ {
+ destType: undefined,
+ },
+ ],
+ batched: false,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description:
+ 'Test 3 - should abort events, invalid router transform structure without input & destType',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {},
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ error: 'Invalid event array',
+ metadata: [
+ {
+ destType: undefined,
+ },
+ ],
+ batched: false,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
+
export const data = [
- {
- name: 'google_adwords_enhanced_conversions',
- description: 'Test 0',
- feature: 'router',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
+ {
+ name: 'google_adwords_enhanced_conversions',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: events,
+ destType: 'google_adwords_enhanced_conversions',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/1234567890:uploadConversionAdjustments',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': '11',
+ },
+ params: { event: 'Page View', customerId: '1234567890' },
body: {
- input: [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- },
- "jobId": 1
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- },
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- },
- "jobId": 2
- },
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "type": "identify",
- "traits": {
- "status": "elizabeth"
- },
- "userId": "emrichardson820+22822@gmail.com",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "24c5HJxHomh6YCngEOCgjS5r1KX/Syncher",
- "task_id": "vw_rs_mailchimp_mocked_hg_data",
- "version": "v1.8.1",
- "batch_id": "f252c69d-c40d-450e-bcd2-2cf26cb62762",
- "job_run_id": "c8el40l6e87v0c4hkbl0",
- "task_run_id": "c8el40l6e87v0c4hkblg"
- },
- "externalId": [
- {
- "id": "emrichardson820+22822@gmail.com",
- "type": "MAILCHIMP-92e1f1ad2c",
- "identifierType": "email_address"
- }
- ],
- "mappedToDestination": "true"
- },
- "recordId": "1",
- "rudderId": "4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a",
- "messageId": "b3bee036-fc26-4f6d-9867-c17f85708a82"
- }
+ JSON: {
+ partialFailure: true,
+ conversionAdjustments: [
+ {
+ gclidDateTimePair: {
+ gclid: 'gclid1234',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
},
- {
- "metadata": {
- "secret": {},
- "jobId": 3
+ restatementValue: { adjustedValue: 10, currencyCode: 'INR' },
+ orderId: '10000',
+ adjustmentDateTime: '2022-01-01 12:32:45-08:00',
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da',
+ hashedLastName:
+ '1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4',
+ state: 'UK',
+ city: 'London',
+ hashedStreetAddress:
+ '9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550',
},
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "traits": {
- "phone": "912382193",
- "firstName": "John",
- "lastName": "Gomes",
- "city": "London",
- "state": "UK",
- "streetAddress": "71 Cherry Court SOUTHAMPTON SO53 5PD UK"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "event": "Page View",
- "type": "track",
- "messageId": "5e10d13a-bf9a-44bf-b884-43a9e591ea71",
- "originalTimestamp": "2019-10-14T11:15:18.299Z",
- "anonymousId": "00000000000000000000000000",
- "userId": "12345",
- "properties": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "adjustedValue": "10",
- "currency": "INR",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "partialFailure": true,
- "campaignId": "1",
- "templateId": "0",
- "order_id": 10000,
- "total": 1000,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "price": "19",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg",
- "quantity": "2"
- },
- {
- "product_id": "507f1f77bcf86cd7994390112",
- "sku": "45790-322",
- "name": "Monopoly: 3rd Edition2",
- "price": "192",
- "quantity": 22,
- "position": "12",
- "category": "Cars2",
- "url": "https://www.example.com/product/path2",
- "image_url": "https://www.example.com/product/path.jpg2"
- }
- ]
- },
- "integrations": {
- "All": true
- },
- "name": "ApplicationLoaded",
- "sentAt": "2019-10-14T11:15:53.296Z"
- }
- },
+ },
+ ],
+ adjustmentType: 'ENHANCEMENT',
+ },
],
- destType: 'google_adwords_enhanced_conversions',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
},
- method: 'POST',
+ files: {},
+ },
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ { conversions: 'Page View' },
+ { conversions: 'Product Added' },
+ ],
+ authStatus: 'active',
+ },
+ },
},
- },
- output: {
- response: {
- status: 200,
- body: {
- output: [
- {
- "batchedRequest": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadConversionAdjustments",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "11"
- },
- "params": { "event": "Page View", "customerId": "1234567890" },
- "body": {
- "JSON": {
- "partialFailure": true,
- "conversionAdjustments": [
- {
- "gclidDateTimePair": {
- "gclid": "gclid1234",
- "conversionDateTime": "2022-01-01 12:32:45-08:00"
- },
- "restatementValue": {
- "adjustedValue": 10,
- "currencyCode": "INR"
- },
- "orderId": "10000",
- "adjustmentDateTime": "2022-01-01 12:32:45-08:00",
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "04387707e6cbed8c4538c81cc570ed9252d579469f36c273839b26d784e4bdbe"
- },
- {
- "addressInfo": {
- "hashedFirstName": "a8cfcd74832004951b4408cdb0a5dbcd8c7e52d43f7fe244bf720582e05241da",
- "hashedLastName": "1c574b17eefa532b6d61c963550a82d2d3dfca4a7fb69e183374cfafd5328ee4",
- "state": "UK",
- "city": "London",
- "hashedStreetAddress": "9a4d2e50828448f137f119a3ebdbbbab8d6731234a67595fdbfeb2a2315dd550"
- }
- }
- ],
- "adjustmentType": "ENHANCEMENT"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- },
- "jobId": 1
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [{ "conversions": "Page View" }, { "conversions": "Product Added" }],
- "authStatus": "active"
- }
- }
- },
- {
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl91011"
- },
- "jobId": 2
- }
- ],
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "batched": false,
- "statusCode": 400,
- "error": "Message Type identify is not supported. Aborting message.",
- "statTags": {
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "feature": "router",
- "implementation": "native",
- "module": "destination",
- }
- },
- {
- "metadata": [
- {
- "secret": {},
- "jobId": 3
- }
- ],
- "destination": {
- "Config": {
- "rudderAccountId": "25u5whFH7gVTnCiAjn4ykoCLGoC",
- "customerId": "1234567890",
- "subAccount": true,
- "loginCustomerId": "11",
- "listOfConversions": [
- {
- "conversions": "Page View"
- },
- {
- "conversions": "Product Added"
- }
- ],
- "authStatus": "active"
- }
- },
- "batched": false,
- "statusCode": 500,
- "error": "OAuth - access token not found",
- "statTags": {
- "destType": "GOOGLE_ADWORDS_ENHANCED_CONVERSIONS",
- "errorCategory": "platform",
- "errorType": "oAuthSecret",
- "feature": "router",
- "implementation": "native",
- "module": "destination",
- }
- }
- ]
- ,
+ {
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl91011',
+ },
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '',
+ listOfConversions: [
+ { conversions: 'Page View' },
+ { conversions: 'Product Added' },
+ ],
+ authStatus: 'active',
+ },
+ },
+ batched: false,
+ statusCode: 400,
+ error: 'Message Type identify is not supported. Aborting message.',
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ {
+ metadata: [{ secret: {}, jobId: 3, userId: 'u1' }],
+ destination: {
+ Config: {
+ rudderAccountId: '25u5whFH7gVTnCiAjn4ykoCLGoC',
+ customerId: '1234567890',
+ subAccount: true,
+ loginCustomerId: '11',
+ listOfConversions: [
+ { conversions: 'Page View' },
+ { conversions: 'Product Added' },
+ ],
+ authStatus: 'active',
},
+ },
+ batched: false,
+ statusCode: 500,
+ error: 'OAuth - access token not found',
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_ENHANCED_CONVERSIONS',
+ errorCategory: 'platform',
+ errorType: 'oAuthSecret',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
},
+ ],
},
- }
+ },
+ },
+ },
+ ...invalidRtTfCases,
];
diff --git a/test/integrations/destinations/google_adwords_offline_conversions/dataDelivery/data.ts b/test/integrations/destinations/google_adwords_offline_conversions/dataDelivery/data.ts
index 284632ae090..ae752733990 100644
--- a/test/integrations/destinations/google_adwords_offline_conversions/dataDelivery/data.ts
+++ b/test/integrations/destinations/google_adwords_offline_conversions/dataDelivery/data.ts
@@ -1,750 +1,768 @@
export const data = [
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 0',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/11122233331/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "logincustomerid"
- },
- "params": {
- "customerId": "1112223333",
- "event": "Sign-up - click"
- },
- "body": {
- "JSON": {
- "addConversionPayload": {
- "enable_partial_failure": false,
- "enable_warnings": false,
- "operations": [
- {
- "create": {
- "transaction_attribute": {
- "CUSTOM_KEY": "CUSTOM_VALUE",
- "currency_code": "INR",
- "order_id": "order id",
- "store_attribute": {
- "store_code": "store code"
- },
- "transaction_amount_micros": "100000000",
- "transaction_date_time": "2019-10-14 11:15:18+00:00"
- },
- "userIdentifiers": [
- {
- "hashedEmail": "6db61e6dcbcf2390e4a46af26f26a133a3bee45021422fc7ae86e9136f14110",
- "userIdentifierSource": "UNSPECIFIED"
- }
- ]
- }
- }
- ],
- "validate_only": false
- },
- "createJobPayload": {
- "job": {
- "storeSalesMetadata": {
- "custom_key": "CUSTOM_KEY",
- "loyaltyFraction": 1,
- "transaction_upload_fraction": "1"
- },
- "type": "STORE_SALES_UPLOAD_FIRST_PARTY"
- }
- },
- "event": "1112223333",
- "executeJobPayload": {
- "validate_only": false
- },
- "isStoreConversion": true
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/11122233331/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': 'logincustomerid',
+ },
+ params: {
+ customerId: '1112223333',
+ event: 'Sign-up - click',
+ },
+ body: {
+ JSON: {
+ addConversionPayload: {
+ enable_partial_failure: false,
+ enable_warnings: false,
+ operations: [
+ {
+ create: {
+ transaction_attribute: {
+ CUSTOM_KEY: 'CUSTOM_VALUE',
+ currency_code: 'INR',
+ order_id: 'order id',
+ store_attribute: {
+ store_code: 'store code',
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 400,
- body: {
- "output": {
- "status": 400,
- "message": "[Google Ads Offline Conversions]:: Request contains an invalid argument. during google_ads_offline_store_conversions Add Conversion",
- "destinationResponse": {
- "error": {
- "code": 400,
- "details": [
- {
- "@type": "type.googleapis.com/google.ads.googleads.v14.errors.GoogleAdsFailure",
- "errors": [
- {
- "errorCode": {
- "offlineUserDataJobError": "INVALID_SHA256_FORMAT"
- },
- "message": "The SHA256 encoded value is malformed.",
- "location": {
- "fieldPathElements": [
- {
- "fieldName": "operations",
- "index": 0
- },
- {
- "fieldName": "create"
- },
- {
- "fieldName": "user_identifiers",
- "index": 0
- },
- {
- "fieldName": "hashed_email"
- }
- ]
- }
- }
- ],
- "requestId": "68697987"
- }
- ],
- "message": "Request contains an invalid argument.",
- "status": "INVALID_ARGUMENT"
- }
+ transaction_amount_micros: '100000000',
+ transaction_date_time: '2019-10-14 11:15:18+00:00',
+ },
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af26f26a133a3bee45021422fc7ae86e9136f14110',
+ userIdentifierSource: 'UNSPECIFIED',
},
- "statTags": {
- "destType": "GOOGLE_ADWORDS_OFFLINE_CONVERSIONS",
- "destinationId": "Non-determininable",
- "errorCategory": "network",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination",
- "workspaceId": "Non-determininable",
- }
- }
+ ],
+ },
+ },
+ ],
+ validate_only: false,
+ },
+ createJobPayload: {
+ job: {
+ storeSalesMetadata: {
+ custom_key: 'CUSTOM_KEY',
+ loyaltyFraction: 1,
+ transaction_upload_fraction: '1',
+ },
+ type: 'STORE_SALES_UPLOAD_FIRST_PARTY',
},
+ },
+ event: '1112223333',
+ executeJobPayload: {
+ validate_only: false,
+ },
+ isStoreConversion: true,
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
+ method: 'POST',
+ },
},
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1112223333/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "logincustomerid"
- },
- "params": {
- "customerId": "1112223333",
- "event": "Sign-up - click"
- },
- "body": {
- "JSON": {
- "addConversionPayload": {
- "enable_partial_failure": false,
- "enable_warnings": false,
- "operations": [
- {
- "create": {
- "transaction_attribute": {
- "CUSTOM_KEY": "CUSTOM_VALUE",
- "currency_code": "INR",
- "order_id": "order id",
- "store_attribute": {
- "store_code": "store code"
- },
- "transaction_amount_micros": "100000000",
- "transaction_date_time": "2019-10-14 11:15:18+00:00"
- },
- "userIdentifiers": [
- {
- "hashedEmail": "6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110",
- "userIdentifierSource": "UNSPECIFIED"
- }
- ]
- }
- }
- ],
- "validate_only": false
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ status: 400,
+ message:
+ '[Google Ads Offline Conversions]:: Request contains an invalid argument. during google_ads_offline_store_conversions Add Conversion',
+ destinationResponse: {
+ error: {
+ code: 400,
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.ads.googleads.v14.errors.GoogleAdsFailure',
+ errors: [
+ {
+ errorCode: {
+ offlineUserDataJobError: 'INVALID_SHA256_FORMAT',
+ },
+ message: 'The SHA256 encoded value is malformed.',
+ location: {
+ fieldPathElements: [
+ {
+ fieldName: 'operations',
+ index: 0,
},
- "createJobPayload": {
- "job": {
- "storeSalesMetadata": {
- "custom_key": "CUSTOM_KEY",
- "loyaltyFraction": 1,
- "transaction_upload_fraction": "1"
- },
- "type": "STORE_SALES_UPLOAD_FIRST_PARTY"
- }
+ {
+ fieldName: 'create',
},
- "event": "1112223333",
- "executeJobPayload": {
- "validate_only": false
+ {
+ fieldName: 'user_identifiers',
+ index: 0,
+ },
+ {
+ fieldName: 'hashed_email',
},
- "isStoreConversion": true
+ ],
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
+ },
+ ],
+ requestId: '68697987',
+ },
+ ],
+ message: 'Request contains an invalid argument.',
+ status: 'INVALID_ARGUMENT',
+ },
},
- },
- output: {
- response: {
- status: 200,
- body: {
- "output": {
- "status": 200,
- "message": "[Google Ads Offline Conversions Response Handler] - Request processed successfully",
- "destinationResponse": {
- "response": {
- "name": "customers/111-222-3333/operations/abcd="
- },
- "status": 200
- }
- }
- },
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_OFFLINE_CONVERSIONS',
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
},
+ },
},
+ },
},
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 2',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/customerid/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011",
- "login-customer-id": "logincustomerid"
- },
- "params": {
- "customerId": "1112223333",
- "event": "Sign-up - click"
- },
- "body": {
- "JSON": {
- "addConversionPayload": {
- "enable_partial_failure": false,
- "enable_warnings": false,
- "operations": [
- {
- "create": {
- "transaction_attribute": {
- "CUSTOM_KEY": "CUSTOM_VALUE",
- "currency_code": "INR",
- "order_id": "order id",
- "store_attribute": {
- "store_code": "store code"
- },
- "transaction_amount_micros": "100000000",
- "transaction_date_time": "2019-10-14 11:15:18+00:00"
- },
- "userIdentifiers": [
- {
- "hashedEmail": "6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110",
- "userIdentifierSource": "UNSPECIFIED"
- }
- ]
- }
- }
- ],
- "validate_only": false
- },
- "createJobPayload": {
- "job": {
- "storeSalesMetadata": {
- "custom_key": "CUSTOM_KEY",
- "loyaltyFraction": 1,
- "transaction_upload_fraction": "1"
- },
- "type": "STORE_SALES_UPLOAD_FIRST_PARTY"
- }
- },
- "event": "1112223333",
- "executeJobPayload": {
- "validate_only": false
- },
- "isStoreConversion": true
+ },
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://googleads.googleapis.com/v14/customers/1112223333/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': 'logincustomerid',
+ },
+ params: {
+ customerId: '1112223333',
+ event: 'Sign-up - click',
+ },
+ body: {
+ JSON: {
+ addConversionPayload: {
+ enable_partial_failure: false,
+ enable_warnings: false,
+ operations: [
+ {
+ create: {
+ transaction_attribute: {
+ CUSTOM_KEY: 'CUSTOM_VALUE',
+ currency_code: 'INR',
+ order_id: 'order id',
+ store_attribute: {
+ store_code: 'store code',
+ },
+ transaction_amount_micros: '100000000',
+ transaction_date_time: '2019-10-14 11:15:18+00:00',
+ },
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ userIdentifierSource: 'UNSPECIFIED',
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ ],
},
- "files": {}
- }
+ },
+ ],
+ validate_only: false,
+ },
+ createJobPayload: {
+ job: {
+ storeSalesMetadata: {
+ custom_key: 'CUSTOM_KEY',
+ loyaltyFraction: 1,
+ transaction_upload_fraction: '1',
+ },
+ type: 'STORE_SALES_UPLOAD_FIRST_PARTY',
+ },
+ },
+ event: '1112223333',
+ executeJobPayload: {
+ validate_only: false,
+ },
+ isStoreConversion: true,
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 401,
- body: {
- "output": {
- "status": 401,
- "message": "[Google Ads Offline Conversions]:: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. during google_ads_offline_store_conversions Job Creation",
- "authErrorCategory": "REFRESH_TOKEN",
- "destinationResponse": {
- "error": {
- "code": 401,
- "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
- "status": "UNAUTHENTICATED"
- }
- },
- "statTags": {
- "destType": "GOOGLE_ADWORDS_OFFLINE_CONVERSIONS",
- "destinationId": "Non-determininable",
- "errorCategory": "network",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination",
- "workspaceId": "Non-determininable"
- }
- }
- }
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message:
+ '[Google Ads Offline Conversions Response Handler] - Request processed successfully',
+ destinationResponse: {
+ response: {
+ name: 'customers/111-222-3333/operations/abcd=',
+ },
+ status: 200,
},
+ },
},
+ },
},
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 3',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567890:uploadClickConversions",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011"
- },
- "params": {
- "event": "Sign-up - click",
- "customerId": "1234567890",
- "customVariables": [
- {
- "from": "value",
- "to": "revenue"
- },
- {
- "from": "total",
- "to": "cost"
- }
- ],
- "properties": {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel",
- "conversionCustomVariable": "conversionCustomVariable",
- "value": "value",
- "merchantId": "9876merchantId",
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "quantity": "2",
- "price": "50",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg"
- }
- ],
- "userIdentifierSource": "FIRST_PARTY",
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": "1",
- "currency": "GBP",
- "orderId": "PL-123QR"
- }
- },
- "body": {
- "JSON": {
- "conversions": [
- {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionData": {
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel"
- },
- "cartData": {
- "merchantId": 9876,
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "items": [
- {
- "productId": "507f1f77bcf86cd799439011",
- "quantity": 2,
- "unitPrice": 50
- }
- ]
- },
- "userIdentifiers": [
- {
- "userIdentifierSource": "FIRST_PARTY",
- "hashedEmail": "6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110"
- }
- ],
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": 1,
- "currencyCode": "GBP",
- "orderId": "PL-123QR"
- }
- ],
- "partialFailure": true
+ },
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://googleads.googleapis.com/v14/customers/customerid/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ 'login-customer-id': 'logincustomerid',
+ },
+ params: {
+ customerId: '1112223333',
+ event: 'Sign-up - click',
+ },
+ body: {
+ JSON: {
+ addConversionPayload: {
+ enable_partial_failure: false,
+ enable_warnings: false,
+ operations: [
+ {
+ create: {
+ transaction_attribute: {
+ CUSTOM_KEY: 'CUSTOM_VALUE',
+ currency_code: 'INR',
+ order_id: 'order id',
+ store_attribute: {
+ store_code: 'store code',
+ },
+ transaction_amount_micros: '100000000',
+ transaction_date_time: '2019-10-14 11:15:18+00:00',
+ },
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ userIdentifierSource: 'UNSPECIFIED',
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ ],
},
- "files": {}
- }
+ },
+ ],
+ validate_only: false,
+ },
+ createJobPayload: {
+ job: {
+ storeSalesMetadata: {
+ custom_key: 'CUSTOM_KEY',
+ loyaltyFraction: 1,
+ transaction_upload_fraction: '1',
+ },
+ type: 'STORE_SALES_UPLOAD_FIRST_PARTY',
+ },
+ },
+ event: '1112223333',
+ executeJobPayload: {
+ validate_only: false,
+ },
+ isStoreConversion: true,
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 401,
- body: {
- "output": {
- "status": 401,
- "message": "[Google Ads Offline Conversions]:: [{\"error\":{\"code\":401,\"message\":\"Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.\",\"status\":\"UNAUTHENTICATED\"}}] during google_ads_offline_conversions response transformation",
- "authErrorCategory": "REFRESH_TOKEN",
- "destinationResponse": [
- {
- "error": {
- "code": 401,
- "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
- "status": "UNAUTHENTICATED"
- }
- }
- ],
- "statTags": {
- "destType": "GOOGLE_ADWORDS_OFFLINE_CONVERSIONS",
- "destinationId": "Non-determininable",
- "errorCategory": "network",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination",
- "workspaceId": "Non-determininable",
- }
- }
- }
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ message:
+ '[Google Ads Offline Conversions]:: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project. during google_ads_offline_store_conversions Job Creation',
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: {
+ error: {
+ code: 401,
+ message:
+ 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ status: 'UNAUTHENTICATED',
+ },
},
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_OFFLINE_CONVERSIONS',
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
+ },
+ },
},
+ },
},
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 4',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567891:uploadClickConversions",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011"
- },
- "params": {
- "event": "Sign-up - click",
- "customerId": "1234567891",
- "customVariables": [
- {
- "from": "Value",
- "to": "revenue"
- },
- {
- "from": "total",
- "to": "cost"
- }
- ],
- "properties": {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel",
- "conversionCustomVariable": "conversionCustomVariable",
- "Value": "value",
- "merchantId": "9876merchantId",
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "quantity": "2",
- "price": "50",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg"
- }
- ],
- "userIdentifierSource": "FIRST_PARTY",
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": "1",
- "currency": "GBP",
- "orderId": "PL-123QR"
- }
- },
- "body": {
- "JSON": {
- "conversions": [
- {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionData": {
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel"
- },
- "cartData": {
- "merchantId": 9876,
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "items": [
- {
- "productId": "507f1f77bcf86cd799439011",
- "quantity": 2,
- "unitPrice": 50
- }
- ]
- },
- "userIdentifiers": [
- {
- "userIdentifierSource": "FIRST_PARTY",
- "hashedPhoneNumber": "04e1dabb7c1348b72bfa87da179c9697c69af74827649266a5da8cdbb367abcd"
- }
- ],
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": 1,
- "currencyCode": "GBP",
- "orderId": "PL-123QR"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ },
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 3',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/1234567890:uploadClickConversions',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ },
+ params: {
+ event: 'Sign-up - click',
+ customerId: '1234567890',
+ customVariables: [
+ {
+ from: 'value',
+ to: 'revenue',
+ },
+ {
+ from: 'total',
+ to: 'cost',
+ },
+ ],
+ properties: {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ conversionCustomVariable: 'conversionCustomVariable',
+ value: 'value',
+ merchantId: '9876merchantId',
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: '2',
+ price: '50',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ },
+ ],
+ userIdentifierSource: 'FIRST_PARTY',
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: '1',
+ currency: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ },
+ body: {
+ JSON: {
+ conversions: [
+ {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionData: {
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ },
+ cartData: {
+ merchantId: 9876,
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ items: [
+ {
+ productId: '507f1f77bcf86cd799439011',
+ quantity: 2,
+ unitPrice: 50,
+ },
+ ],
+ },
+ userIdentifiers: [
+ {
+ userIdentifierSource: 'FIRST_PARTY',
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
},
- "files": {}
- }
- }
+ ],
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: 1,
+ currencyCode: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 200,
- body: {
- "output": {
- "status": 200,
- "message": "[Google Ads Offline Conversions Response Handler] - Request processed successfully",
- "destinationResponse": {
- "response": [
- {
- "adjustmentType": "ENHANCEMENT",
- "conversionAction": "customers/1234567891/conversionActions/874224905",
- "adjustmentDateTime": "2021-01-01 12:32:45-08:00",
- "gclidDateTimePair": {
- "gclid": "1234",
- "conversionDateTime": "2021-01-01 12:32:45-08:00"
- },
- "orderId": "12345"
- }
- ],
- "status": 200
- }
- }
- }
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: {
+ output: {
+ status: 401,
+ message:
+ '[Google Ads Offline Conversions]:: [{"error":{"code":401,"message":"Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.","status":"UNAUTHENTICATED"}}] during google_ads_offline_conversions response transformation',
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: [
+ {
+ error: {
+ code: 401,
+ message:
+ 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.',
+ status: 'UNAUTHENTICATED',
+ },
+ },
+ ],
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_OFFLINE_CONVERSIONS',
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
},
+ },
},
+ },
},
- {
- name: 'google_adwords_offline_conversions',
- description: 'Test 5',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/1234567891:uploadClickConversions",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl91011"
- },
- "params": {
- "event": "Sign-up - click",
- "customerId": "1234567891",
- "customVariables": [],
- "properties": {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel",
- "conversionCustomVariable": "conversionCustomVariable",
- "value": "value",
- "merchantId": "9876merchantId",
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "products": [
- {
- "product_id": "507f1f77bcf86cd799439011",
- "quantity": "2",
- "price": "50",
- "sku": "45790-32",
- "name": "Monopoly: 3rd Edition",
- "position": "1",
- "category": "cars",
- "url": "https://www.example.com/product/path",
- "image_url": "https://www.example.com/product/path.jpg"
- }
- ],
- "userIdentifierSource": "FIRST_PARTY",
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": "1",
- "currency": "GBP",
- "orderId": "PL-123QR"
- }
+ },
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 4',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/1234567891:uploadClickConversions',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ },
+ params: {
+ event: 'Sign-up - click',
+ customerId: '1234567891',
+ customVariables: [
+ {
+ from: 'Value',
+ to: 'revenue',
+ },
+ {
+ from: 'total',
+ to: 'cost',
+ },
+ ],
+ properties: {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ conversionCustomVariable: 'conversionCustomVariable',
+ Value: 'value',
+ merchantId: '9876merchantId',
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: '2',
+ price: '50',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ },
+ ],
+ userIdentifierSource: 'FIRST_PARTY',
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: '1',
+ currency: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ },
+ body: {
+ JSON: {
+ conversions: [
+ {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionData: {
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ },
+ cartData: {
+ merchantId: 9876,
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ items: [
+ {
+ productId: '507f1f77bcf86cd799439011',
+ quantity: 2,
+ unitPrice: 50,
+ },
+ ],
+ },
+ userIdentifiers: [
+ {
+ userIdentifierSource: 'FIRST_PARTY',
+ hashedPhoneNumber:
+ '04e1dabb7c1348b72bfa87da179c9697c69af74827649266a5da8cdbb367abcd',
},
- "body": {
- "JSON": {
- "conversions": [
- {
- "gbraid": "gbraid",
- "wbraid": "wbraid",
- "externalAttributionData": {
- "externalAttributionCredit": 10,
- "externalAttributionModel": "externalAttributionModel"
- },
- "cartData": {
- "merchantId": 9876,
- "feedCountryCode": "feedCountryCode",
- "feedLanguageCode": "feedLanguageCode",
- "localTransactionCost": 20,
- "items": [
- {
- "productId": "507f1f77bcf86cd799439011",
- "quantity": 2,
- "unitPrice": 50
- }
- ]
- },
- "userIdentifiers": [
- {
- "userIdentifierSource": "FIRST_PARTY",
- "hashedPhoneNumber": "04e1dabb7c1348b72bfa87da179c9697c69af74827649266a5da8cdbb367abcd"
- }
- ],
- "conversionEnvironment": "WEB",
- "gclid": "gclid",
- "conversionDateTime": "2022-01-01 12:32:45-08:00",
- "conversionValue": 1,
- "currencyCode": "GBP",
- "orderId": "PL-123QR"
- }
- ],
- "partialFailure": true
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
+ ],
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: 1,
+ currencyCode: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message:
+ '[Google Ads Offline Conversions Response Handler] - Request processed successfully',
+ destinationResponse: {
+ response: [
+ {
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/1234567891/conversionActions/874224905',
+ adjustmentDateTime: '2021-01-01 12:32:45-08:00',
+ gclidDateTimePair: {
+ gclid: '1234',
+ conversionDateTime: '2021-01-01 12:32:45-08:00',
+ },
+ orderId: '12345',
+ },
+ ],
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ name: 'google_adwords_offline_conversions',
+ description: 'Test 5',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/1234567891:uploadClickConversions',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ },
+ params: {
+ event: 'Sign-up - click',
+ customerId: '1234567891',
+ customVariables: [],
+ properties: {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ conversionCustomVariable: 'conversionCustomVariable',
+ value: 'value',
+ merchantId: '9876merchantId',
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ products: [
+ {
+ product_id: '507f1f77bcf86cd799439011',
+ quantity: '2',
+ price: '50',
+ sku: '45790-32',
+ name: 'Monopoly: 3rd Edition',
+ position: '1',
+ category: 'cars',
+ url: 'https://www.example.com/product/path',
+ image_url: 'https://www.example.com/product/path.jpg',
+ },
+ ],
+ userIdentifierSource: 'FIRST_PARTY',
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: '1',
+ currency: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ },
+ body: {
+ JSON: {
+ conversions: [
+ {
+ gbraid: 'gbraid',
+ wbraid: 'wbraid',
+ externalAttributionData: {
+ externalAttributionCredit: 10,
+ externalAttributionModel: 'externalAttributionModel',
+ },
+ cartData: {
+ merchantId: 9876,
+ feedCountryCode: 'feedCountryCode',
+ feedLanguageCode: 'feedLanguageCode',
+ localTransactionCost: 20,
+ items: [
+ {
+ productId: '507f1f77bcf86cd799439011',
+ quantity: 2,
+ unitPrice: 50,
+ },
+ ],
+ },
+ userIdentifiers: [
+ {
+ userIdentifierSource: 'FIRST_PARTY',
+ hashedPhoneNumber:
+ '04e1dabb7c1348b72bfa87da179c9697c69af74827649266a5da8cdbb367abcd',
},
- "files": {}
- }
- }
+ ],
+ conversionEnvironment: 'WEB',
+ gclid: 'gclid',
+ conversionDateTime: '2022-01-01 12:32:45-08:00',
+ conversionValue: 1,
+ currencyCode: 'GBP',
+ orderId: 'PL-123QR',
+ },
+ ],
+ partialFailure: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 200,
- body: {
- "output": {
- "destinationResponse": {
- "response": [
- {
- "adjustmentDateTime": "2021-01-01 12:32:45-08:00",
- "adjustmentType": "ENHANCEMENT",
- "conversionAction": "customers/1234567891/conversionActions/874224905",
- "gclidDateTimePair": {
- "conversionDateTime": "2021-01-01 12:32:45-08:00",
- "gclid": "1234"
- },
- "orderId": "12345"
- }
- ],
- "status": 200
- },
- "message": "[Google Ads Offline Conversions Response Handler] - Request processed successfully",
- "status": 200
- }
- }
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ destinationResponse: {
+ response: [
+ {
+ adjustmentDateTime: '2021-01-01 12:32:45-08:00',
+ adjustmentType: 'ENHANCEMENT',
+ conversionAction: 'customers/1234567891/conversionActions/874224905',
+ gclidDateTimePair: {
+ conversionDateTime: '2021-01-01 12:32:45-08:00',
+ gclid: '1234',
+ },
+ orderId: '12345',
+ },
+ ],
+ status: 200,
},
+ message:
+ '[Google Ads Offline Conversions Response Handler] - Request processed successfully',
+ status: 200,
+ },
},
- }
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/google_adwords_offline_conversions/router/data.ts b/test/integrations/destinations/google_adwords_offline_conversions/router/data.ts
index c5d2f2f5249..a38980f0e9f 100644
--- a/test/integrations/destinations/google_adwords_offline_conversions/router/data.ts
+++ b/test/integrations/destinations/google_adwords_offline_conversions/router/data.ts
@@ -41,21 +41,13 @@ export const data = [
postalCode: 'EC3M',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'Promotion Clicked',
type: 'track',
@@ -94,9 +86,7 @@ export const data = [
conversionValue: '1',
currency: 'GBP',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
@@ -106,55 +96,27 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
+ jobId: 1,
+ userId: 'u1',
},
destination: {
Config: {
customerId: '962-581-2972',
eventsToOfflineConversionsTypeMapping: [
- {
- from: 'Sign up completed',
- to: 'click',
- },
- {
- from: 'Download',
- to: 'call',
- },
- {
- from: 'Promotion Clicked',
- to: 'click',
- },
- {
- from: 'Product Searched',
- to: 'call',
- },
+ { from: 'Sign up completed', to: 'click' },
+ { from: 'Download', to: 'call' },
+ { from: 'Promotion Clicked', to: 'click' },
+ { from: 'Product Searched', to: 'call' },
],
eventsToConversionsNamesMapping: [
- {
- from: 'Sign up completed',
- to: 'Sign-up - click',
- },
- {
- from: 'Download',
- to: 'Page view',
- },
- {
- from: 'Promotion Clicked',
- to: 'Sign-up - click',
- },
- {
- from: 'Product Searched',
- to: 'search',
- },
+ { from: 'Sign up completed', to: 'Sign-up - click' },
+ { from: 'Download', to: 'Page view' },
+ { from: 'Promotion Clicked', to: 'Sign-up - click' },
+ { from: 'Product Searched', to: 'search' },
],
customVariables: [
- {
- from: 'value',
- to: 'revenue',
- },
- {
- from: 'total',
- to: 'cost',
- },
+ { from: 'value', to: 'revenue' },
+ { from: 'total', to: 'cost' },
],
UserIdentifierSource: 'THIRD_PARTY',
conversionEnvironment: 'WEB',
@@ -195,21 +157,13 @@ export const data = [
postalCode: 'EC3M',
streetAddress: '71 Cherry Court SOUTHAMPTON SO53 5PD UK',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'Product Searched',
type: 'track',
@@ -240,19 +194,15 @@ export const data = [
userIdentifierSource: 'FIRST_PARTY',
conversionEnvironment: 'WEB',
gclid: 'gclid',
-
conversionCustomVariable: 'conversionCustomVariable',
value: 'value',
-
callerId: 'callerId',
callStartDateTime: '2022-08-28 15:01:30+05:30',
conversionDateTime: '2022-01-01 12:32:45-08:00',
conversionValue: '1',
currency: 'GBP',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
@@ -262,55 +212,27 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
+ jobId: 2,
+ userId: 'u1',
},
destination: {
Config: {
customerId: '962-581-2972',
eventsToOfflineConversionsTypeMapping: [
- {
- from: 'Sign up completed',
- to: 'click',
- },
- {
- from: 'Download',
- to: 'call',
- },
- {
- from: 'Promotion Clicked',
- to: 'click',
- },
- {
- from: 'Product Searched',
- to: 'call',
- },
+ { from: 'Sign up completed', to: 'click' },
+ { from: 'Download', to: 'call' },
+ { from: 'Promotion Clicked', to: 'click' },
+ { from: 'Product Searched', to: 'call' },
],
eventsToConversionsNamesMapping: [
- {
- from: 'Sign up completed',
- to: 'Sign-up - click',
- },
- {
- from: 'Download',
- to: 'Page view',
- },
- {
- from: 'Promotion Clicked',
- to: 'Sign-up - click',
- },
- {
- from: 'Product Searched',
- to: 'search',
- },
+ { from: 'Sign up completed', to: 'Sign-up - click' },
+ { from: 'Download', to: 'Page view' },
+ { from: 'Promotion Clicked', to: 'Sign-up - click' },
+ { from: 'Product Searched', to: 'search' },
],
customVariables: [
- {
- from: 'value',
- to: 'revenue',
- },
- {
- from: 'total',
- to: 'cost',
- },
+ { from: 'value', to: 'revenue' },
+ { from: 'total', to: 'cost' },
],
UserIdentifierSource: 'THIRD_PARTY',
conversionEnvironment: 'WEB',
@@ -324,11 +246,7 @@ export const data = [
{
message: {
channel: 'web',
- context: {
- traits: {
- firstName: 'John',
- },
- },
+ context: { traits: { firstName: 'John' } },
event: 'Product Clicked',
type: 'track',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -348,9 +266,7 @@ export const data = [
callerId: '1234',
callStartDateTime: '2019-10-14T11:15:18.299Z',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
@@ -360,7 +276,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 1,
+ jobId: 3,
+ userId: 'u1',
},
destination: {
Config: {
@@ -405,11 +322,7 @@ export const data = [
{
message: {
channel: 'web',
- context: {
- traits: {
- firstName: 'John',
- },
- },
+ context: { traits: { firstName: 'John' } },
event: 'Order Completed',
type: 'track',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -429,9 +342,7 @@ export const data = [
callerId: '1234',
callStartDateTime: '2019-10-14T11:15:18.299Z',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
@@ -441,7 +352,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 2,
+ jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
@@ -486,11 +398,7 @@ export const data = [
{
message: {
channel: 'web',
- context: {
- traits: {
- firstName: 'John',
- },
- },
+ context: { traits: { firstName: 'John' } },
event: 'Order Completed',
type: 'track',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -510,9 +418,7 @@ export const data = [
callerId: '1234',
callStartDateTime: '2019-10-14T11:15:18.299Z',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
@@ -522,7 +428,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 3,
+ jobId: 5,
+ userId: 'u1',
},
destination: {
Config: {
@@ -574,80 +481,130 @@ export const data = [
body: {
output: [
{
- batchedRequest: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs',
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- },
- params: { event: 'Store sales', customerId: '7693729833' },
- body: {
- JSON: {
- event: '7693729833',
- isStoreConversion: true,
- createJobPayload: {
- job: {
- storeSalesMetadata: {
- loyaltyFraction: 1,
- transaction_upload_fraction: '1',
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ },
+ params: { event: 'Store sales', customerId: '7693729833' },
+ body: {
+ JSON: {
+ event: '7693729833',
+ isStoreConversion: true,
+ createJobPayload: {
+ job: {
+ storeSalesMetadata: {
+ loyaltyFraction: 1,
+ transaction_upload_fraction: '1',
+ },
+ type: 'STORE_SALES_UPLOAD_FIRST_PARTY',
},
- type: 'STORE_SALES_UPLOAD_FIRST_PARTY',
},
- },
- addConversionPayload: {
- operations: [
- {
- create: {
- transaction_attribute: {
- store_attribute: { store_code: 'store code' },
- transaction_amount_micros: '100000000',
- order_id: 'order id',
- currency_code: 'INR',
- transaction_date_time: '2019-10-14 16:45:18+05:30',
- },
- userIdentifiers: [
- {
- hashedEmail:
- '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ addConversionPayload: {
+ operations: [
+ {
+ create: {
+ transaction_attribute: {
+ store_attribute: { store_code: 'store code' },
+ transaction_amount_micros: '100000000',
+ order_id: 'order id',
+ currency_code: 'INR',
+ transaction_date_time: '2019-10-14 16:45:18+05:30',
},
- ],
- },
- },
- {
- create: {
- transaction_attribute: {
- store_attribute: { store_code: 'store code2' },
- transaction_amount_micros: '100000000',
- order_id: 'order id',
- currency_code: 'INR',
- transaction_date_time: '2019-10-14 16:45:18+05:30',
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ },
+ ],
},
- userIdentifiers: [
- {
- hashedEmail:
- '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ },
+ {
+ create: {
+ transaction_attribute: {
+ store_attribute: { store_code: 'store code2' },
+ transaction_amount_micros: '100000000',
+ order_id: 'order id',
+ currency_code: 'INR',
+ transaction_date_time: '2019-10-14 16:45:18+05:30',
},
- ],
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '6db61e6dcbcf2390e4a46af426f26a133a3bee45021422fc7ae86e9136f14110',
+ },
+ ],
+ },
},
+ ],
+ enable_partial_failure: false,
+ enable_warnings: false,
+ validate_only: true,
+ },
+ executeJobPayload: { validate_only: true },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v14/customers/7693729833:uploadCallConversions',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl91011',
+ },
+ params: {
+ event: 'Order Completed',
+ customerId: '7693729833',
+ customVariables: [{ from: '', to: '' }],
+ properties: {
+ loyaltyFraction: 1,
+ order_id: 'order id',
+ currency: 'INR',
+ revenue: '100',
+ store_code: 'store code2',
+ email: 'alex@example.com',
+ gclid: 'gclid',
+ product_id: '123445',
+ quantity: 123,
+ callerId: '1234',
+ callStartDateTime: '2019-10-14T11:15:18.299Z',
+ },
+ },
+ body: {
+ JSON: {
+ conversions: [
+ {
+ callerId: '1234',
+ callStartDateTime: '2019-10-14T11:15:18.299Z',
+ conversionDateTime: '2019-10-14 16:45:18+05:30',
+ conversionValue: 100,
+ currencyCode: 'INR',
},
],
- enable_partial_failure: false,
- enable_warnings: false,
- validate_only: true,
+ partialFailure: true,
},
- executeJobPayload: { validate_only: true },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
+ files: {},
},
- files: {},
- },
+ ],
metadata: [
{
secret: {
@@ -655,7 +612,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 1,
+ jobId: 3,
+ userId: 'u1',
},
{
secret: {
@@ -663,7 +621,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 2,
+ jobId: 4,
+ userId: 'u1',
},
],
batched: true,
@@ -807,6 +766,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
+ jobId: 1,
+ userId: 'u1',
},
],
batched: false,
@@ -916,6 +877,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
+ jobId: 2,
+ userId: 'u1',
},
],
batched: false,
@@ -948,107 +911,6 @@ export const data = [
},
},
},
- {
- batchedRequest: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint:
- 'https://googleads.googleapis.com/v14/customers/7693729833:uploadCallConversions',
- headers: {
- Authorization: 'Bearer abcd1234',
- 'Content-Type': 'application/json',
- 'developer-token': 'ijkl91011',
- },
- params: {
- event: 'Order Completed',
- customerId: '7693729833',
- customVariables: [{ from: '', to: '' }],
- properties: {
- loyaltyFraction: 1,
- order_id: 'order id',
- currency: 'INR',
- revenue: '100',
- store_code: 'store code2',
- email: 'alex@example.com',
- gclid: 'gclid',
- product_id: '123445',
- quantity: 123,
- callerId: '1234',
- callStartDateTime: '2019-10-14T11:15:18.299Z',
- },
- },
- body: {
- JSON: {
- conversions: [
- {
- callerId: '1234',
- callStartDateTime: '2019-10-14T11:15:18.299Z',
- conversionDateTime: '2019-10-14 16:45:18+05:30',
- conversionValue: 100,
- currencyCode: 'INR',
- },
- ],
- partialFailure: true,
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- },
- metadata: [
- {
- secret: {
- access_token: 'abcd1234',
- refresh_token: 'efgh5678',
- developer_token: 'ijkl91011',
- },
- jobId: 2,
- },
- ],
- batched: false,
- statusCode: 200,
- destination: {
- Config: {
- rudderAccountId: '2Hsy2iFyoG5VLDd9wQcggHLMYFA',
- customerId: '769-372-9833',
- subAccount: false,
- UserIdentifierSource: 'FIRST_PARTY',
- conversionEnvironment: 'none',
- defaultUserIdentifier: 'email',
- hashUserIdentifier: true,
- validateOnly: true,
- eventsToOfflineConversionsTypeMapping: [
- { from: 'Data Reading Guide', to: 'click' },
- { from: 'Order Completed', to: 'store' },
- { from: 'Sign-up - click', to: 'click' },
- { from: 'Outbound click (rudderstack.com)', to: 'click' },
- { from: 'Page view', to: 'click' },
- { from: 'download', to: 'click' },
- { from: 'Product Clicked', to: 'store' },
- { from: 'Order Completed', to: 'call' },
- ],
- loginCustomerId: '4219454086',
- eventsToConversionsNamesMapping: [
- { from: 'Data Reading Guide', to: 'Data Reading Guide' },
- { from: 'Order Completed', to: 'Order Completed' },
- { from: 'Sign-up - click', to: 'Sign-up - click' },
- {
- from: 'Outbound click (rudderstack.com)',
- to: 'Outbound click (rudderstack.com)',
- },
- { from: 'Page view', to: 'Page view' },
- { from: 'Sign up completed', to: 'Sign-up - click' },
- { from: 'download', to: 'Page view' },
- { from: 'Product Clicked', to: 'Store sales' },
- ],
- authStatus: 'active',
- oneTrustCookieCategories: [],
- customVariables: [{ from: '', to: '' }],
- },
- },
- },
{
metadata: [
{
@@ -1057,7 +919,8 @@ export const data = [
refresh_token: 'efgh5678',
developer_token: 'ijkl91011',
},
- jobId: 3,
+ jobId: 5,
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/google_adwords_remarketing_lists/dataDelivery/data.ts b/test/integrations/destinations/google_adwords_remarketing_lists/dataDelivery/data.ts
index b41d725799c..fe16ffef471 100644
--- a/test/integrations/destinations/google_adwords_remarketing_lists/dataDelivery/data.ts
+++ b/test/integrations/destinations/google_adwords_remarketing_lists/dataDelivery/data.ts
@@ -1,247 +1,261 @@
export const data = [
- {
- name: 'google_adwords_remarketing_lists',
- description: 'Test 0',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "destination": "google_adwords_remarketing_lists",
- "listId": "709078448",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd"
- }
- }
- ]
- }
- }
- ]
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ destination: 'google_adwords_remarketing_lists',
+ listId: '709078448',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ hashedEmail:
+ '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd',
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ },
+ ],
+ },
},
- method: 'POST'
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 200,
- body: {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": { "response": "", "status": 200 }
- }
- },
- },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: { response: '', status: 200 },
+ },
},
+ },
},
- {
- name: 'google_adwords_remarketing_lists',
- description: 'Test 1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729834/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "709078448",
- "customerId": "7693729833",
- "destination": "google_adwords_remarketing_lists"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "abcd@testmail.com"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://googleads.googleapis.com/v15/customers/7693729834/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '709078448',
+ customerId: '7693729833',
+ destination: 'google_adwords_remarketing_lists',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail: 'abcd@testmail.com',
+ },
+ ],
+ },
},
- method: 'POST'
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 400,
- body: {
- output: {
- "status": 400,
- "message": "Request contains an invalid argument. during ga_audience response transformation",
- "destinationResponse": {
- "error": {
- "code": 400,
- "details": [
- {
- "@type": "type.googleapis.com/google.ads.googleads.v9.errors.GoogleAdsFailure",
- "errors": [
- {
- "errorCode": {
- "offlineUserDataJobError": "INVALID_SHA256_FORMAT"
- },
- "message": "The SHA256 encoded value is malformed.",
- "location": {
- "fieldPathElements": [
- { "fieldName": "operations", "index": 0 },
- { "fieldName": "remove" },
- { "fieldName": "user_identifiers", "index": 0 },
- { "fieldName": "hashed_email" }
- ]
- }
- }
- ]
- }
- ],
- "message": "Request contains an invalid argument.",
- "status": "INVALID_ARGUMENT"
- }
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ status: 400,
+ message:
+ 'Request contains an invalid argument. during ga_audience response transformation',
+ destinationResponse: {
+ error: {
+ code: 400,
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.ads.googleads.v9.errors.GoogleAdsFailure',
+ errors: [
+ {
+ errorCode: {
+ offlineUserDataJobError: 'INVALID_SHA256_FORMAT',
},
- "statTags": {
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- },
- },
+ message: 'The SHA256 encoded value is malformed.',
+ location: {
+ fieldPathElements: [
+ { fieldName: 'operations', index: 0 },
+ { fieldName: 'remove' },
+ { fieldName: 'user_identifiers', index: 0 },
+ { fieldName: 'hashed_email' },
+ ],
+ },
+ },
+ ],
+ },
+ ],
+ message: 'Request contains an invalid argument.',
+ status: 'INVALID_ARGUMENT',
+ },
+ },
+ statTags: {
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
+ },
},
+ },
},
- {
- name: 'google_adwords_remarketing_lists',
- description: 'Test 2',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "709078448",
- "customerId": "7693729833",
- "destination": "google_adwords_remarketing_lists"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd"
- }
- }
- ]
- }
- }
- ]
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '709078448',
+ customerId: '7693729833',
+ destination: 'google_adwords_remarketing_lists',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ hashedEmail:
+ '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd',
},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ },
+ ],
+ },
},
- method: 'POST'
+ ],
},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
},
- output: {
- response: {
- status: 200,
- body: {
- output: {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": { "response": "", "status": 200 }
- },
- },
- },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: { response: '', status: 200 },
+ },
},
- }
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/google_adwords_remarketing_lists/network.ts b/test/integrations/destinations/google_adwords_remarketing_lists/network.ts
index 11cbfa7cd81..8e7c0acbcf7 100644
--- a/test/integrations/destinations/google_adwords_remarketing_lists/network.ts
+++ b/test/integrations/destinations/google_adwords_remarketing_lists/network.ts
@@ -1,115 +1,210 @@
import { enhanceRequestOptions, getFormData } from '../../../../src/adapters/network';
export const networkCallsData = [
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs:create',
- data: { "job": { "type": "CUSTOMER_MATCH_USER_LIST", "customerMatchUserListMetadata": { "userList": "customers/7693729833/userLists/709078448" } } },
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
- },
- httpRes: {
- "status": 200,
- "data": {
- "resourceName": "customers/9249589672/offlineUserDataJobs/18025019461"
- }
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs:create',
+ data: {
+ job: {
+ type: 'CUSTOMER_MATCH_USER_LIST',
+ customerMatchUserListMetadata: {
+ userList: 'customers/7693729833/userLists/709078448',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
},
+ },
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs/18025019461:addOperations',
- data: { "enablePartialFailure": true, "operations": [{ "create": { "userIdentifiers": [{ "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05" }, { "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45" }, { "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05" }, { "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45" }, { "addressInfo": { "hashedFirstName": "e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd" } }] } }] },
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
- },
- httpRes: {
- "status": 200,
- "data": {}
- },
+ httpRes: {
+ status: 200,
+ data: {
+ resourceName: 'customers/9249589672/offlineUserDataJobs/18025019461',
+ },
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs/18025019461:run',
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
- },
- httpRes: {
- "status": 200,
- },
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs/18025019461:addOperations',
+ data: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ { hashedEmail: '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05' },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ { hashedEmail: '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05' },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729834/offlineUserDataJobs:create',
- data: { "job": { "type": "CUSTOMER_MATCH_USER_LIST", "customerMatchUserListMetadata": { "userList": "customers/7693729833/userLists/709078448" } } },
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
- },
- httpRes: {
- "status": 200,
- "data": {
- "resourceName": "customers/9249589672/offlineUserDataJobs/18025019462"
- }
- },
+ httpRes: {
+ status: 200,
+ data: {},
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs/18025019461:run',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729834/offlineUserDataJobs/18025019462:addOperations',
- data: { "enablePartialFailure": true, "operations": [{ "create": { "userIdentifiers": [{ "hashedEmail": "abcd@testmail.com" }] } }] },
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729834/offlineUserDataJobs:create',
+ data: {
+ job: {
+ type: 'CUSTOMER_MATCH_USER_LIST',
+ customerMatchUserListMetadata: {
+ userList: 'customers/7693729833/userLists/709078448',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
},
- httpRes: {
- "data": {
- "error": {
- "code": 400,
- "details": [
- {
- "@type": "type.googleapis.com/google.ads.googleads.v9.errors.GoogleAdsFailure",
- "errors": [
- {
- "errorCode": {
- "offlineUserDataJobError": "INVALID_SHA256_FORMAT"
- },
- "message": "The SHA256 encoded value is malformed.",
- "location": {
- "fieldPathElements": [
- {
- "fieldName": "operations",
- "index": 0
- },
- {
- "fieldName": "remove"
- },
- {
- "fieldName": "user_identifiers",
- "index": 0
- },
- {
- "fieldName": "hashed_email"
- }
- ]
- }
- }
- ]
- }
+ },
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ resourceName: 'customers/9249589672/offlineUserDataJobs/18025019462',
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729834/offlineUserDataJobs/18025019462:addOperations',
+ data: {
+ enablePartialFailure: true,
+ operations: [{ create: { userIdentifiers: [{ hashedEmail: 'abcd@testmail.com' }] } }],
+ },
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ error: {
+ code: 400,
+ details: [
+ {
+ '@type': 'type.googleapis.com/google.ads.googleads.v9.errors.GoogleAdsFailure',
+ errors: [
+ {
+ errorCode: {
+ offlineUserDataJobError: 'INVALID_SHA256_FORMAT',
+ },
+ message: 'The SHA256 encoded value is malformed.',
+ location: {
+ fieldPathElements: [
+ {
+ fieldName: 'operations',
+ index: 0,
+ },
+ {
+ fieldName: 'remove',
+ },
+ {
+ fieldName: 'user_identifiers',
+ index: 0,
+ },
+ {
+ fieldName: 'hashed_email',
+ },
],
- "message": "Request contains an invalid argument.",
- "status": "INVALID_ARGUMENT"
- }
+ },
+ },
+ ],
},
- "status": 400
+ ],
+ message: 'Request contains an invalid argument.',
+ status: 'INVALID_ARGUMENT',
},
+ },
+ status: 400,
},
- {
- httpReq: {
- url: 'https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs/18025019461:addOperations',
- data: { "enablePartialFailure": true, "operations": [{ "remove": { "userIdentifiers": [{ "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05" }, { "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45" }, { "hashedEmail": "85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05" }, { "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45" }, { "addressInfo": { "hashedFirstName": "e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd" } }] } }] },
- headers: { "Authorization": "Bearer dummy-access", "Content-Type": "application/json", "developer-token": "dummy-dev-token" },
- method: 'POST',
- },
- httpRes: {
- "status": 200,
- "data": {}
- },
- }
-];
\ No newline at end of file
+ },
+ {
+ httpReq: {
+ url: 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs/18025019461:addOperations',
+ data: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ { hashedEmail: '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05' },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ { hashedEmail: '85cc9fefa1eff1baab55d10df0cecff2acb25344867a5d0f96e1b1c5e2f10f05' },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'e56d336922eaab3be8c1244dbaa713e134a8eba50ddbd4f50fd2fe18d72595cd',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ data: {},
+ },
+ },
+];
diff --git a/test/integrations/destinations/google_adwords_remarketing_lists/processor/data.ts b/test/integrations/destinations/google_adwords_remarketing_lists/processor/data.ts
index a6733f5daf3..a846e0370d5 100644
--- a/test/integrations/destinations/google_adwords_remarketing_lists/processor/data.ts
+++ b/test/integrations/destinations/google_adwords_remarketing_lists/processor/data.ts
@@ -1,10453 +1,12096 @@
export const data = [
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "hashedLastName": "dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "769-372-9833",
- "loginCustomerId": "870-483-0944",
- "subAccount": true,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "userID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token",
- "login-customer-id": "8704830944"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "thirdPartyUserId": "useri1234"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234",
- "mobileId": "abcd-1234-567h"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "mobileId": "abcd-1234-567h"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "abc@abc.com",
- "phone": "@09876543210",
- "firstName": "abc",
- "lastName": "efg",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- },
- {
- "email": "def@abc.com",
- "phone": "@09876543210",
- "firstName": "def",
- "lastName": "ghi",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "Message Type is not present. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "type": "audiencelist",
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "properties": {
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "listData is not present inside properties. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": true,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "mobileDeviceID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "loginCustomerId is required as subAccount is true.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 12",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "delete": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 400,
- "error": "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 13",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- },
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 14",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 15",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelisT",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": null,
- "lastName": "jkl",
- "country": "US",
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "add": [
- {
- "email": "ghi@abc.com",
- "phone": null,
- "firstName": "ghi",
- "lastName": "jkl",
- "country": null,
- "mobileId": "1245"
- },
- {
- "email": "ghi@abc.com",
- "phone": "@09876543210",
- "firstName": "ghi",
- "lastName": "jkl",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1"
- }
- },
- {
- "hashedEmail": "a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb",
- "hashedLastName": "268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 16",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": false,
- "firstName": "test",
- "lastName": null,
- "country": "US",
- "postalCode": 0
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "list111",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "countryCode": "US",
- "postalCode": 0
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 17",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": null
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": null
- },
- "statusCode": 500,
- "error": "OAuth - access token not found",
- "statTags": {
- "errorCategory": "platform",
- "errorType": "oAuthSecret",
- "destType": "GOOGLE_ADWORDS_REMARKETING_LISTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 18",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "listId": "list111",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General",
- "audienceId": "aud1234"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "sudip@abc.com",
- "phone": false,
- "firstName": "sudip",
- "lastName": null,
- "country": "US",
- "postalCode": 0
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "aud1234",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- },
- {
- "addressInfo": {
- "hashedFirstName": "a512ebb75e941411945c9a18bca4ecc315830e0b5cff8a525472c86c1f540844",
- "countryCode": "US",
- "postalCode": 0
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 19",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "anonymousId": "24ed22ae-0681-4882-8c33-012e298e1c17",
- "channel": "sources",
- "context": {
- "destinationFields": "email",
- "externalId": [
- {
- "identifierType": "email",
- "type": "GOOGLE_ADWORDS_REMARKETING_LISTS-830441345"
- }
- ],
- "mappedToDestination": "true",
- "sources": {
- "job_id": "2UcqQB4ygGtTBAvwCWl7xz8dJgt",
- "job_run_id": "cjmsdip7m95b7aee7tpg",
- "task_run_id": "cjmsdip7m95b7aee7tq0",
- "version": "master"
- }
- },
- "event": "Add_Audience",
- "messageId": "bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "test1@mail.com"
- },
- {
- "email": "test5@xmail.com"
- },
- {
- "email": "test3@mail.com"
- }
- ]
- }
- },
- "recordId": "a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5",
- "rudderId": "5e9ada0e-5f50-4cb8-a015-f6842a7615fd",
- "sentAt": "2023-08-29 10:22:06.395377223 +0000 UTC",
- "type": "audienceList",
- "userId": "23423423"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "830441345",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048"
- },
- {
- "hashedEmail": "34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436"
- },
- {
- "hashedEmail": "8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "google_adwords_remarketing_lists",
- "description": "Test 20",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "destination": {
- "Config": {
- "rudderAccountId": "rudder-acc-id",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": [
- "email",
- "phone",
- "addressInfo"
- ],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "anonymousId": "24ed22ae-0681-4882-8c33-012e298e1c17",
- "channel": "sources",
- "context": {
- "destinationFields": "email",
- "externalId": [
- {
- "identifierType": "email",
- "type": "GOOGLE_ADWORDS_REMARKETING_LISTS-830441345"
- }
- ],
- "mappedToDestination": "true",
- "sources": {
- "job_id": "2UcqQB4ygGtTBAvwCWl7xz8dJgt",
- "job_run_id": "cjmsdip7m95b7aee7tpg",
- "task_run_id": "cjmsdip7m95b7aee7tq0",
- "version": "master"
- }
- },
- "event": "Add_Audience",
- "messageId": "bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test1@mail.com"
- },
- {
- "email": "test5@xmail.com"
- },
- {
- "email": "test3@mail.com"
- }
- ]
- }
- },
- "recordId": "a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5",
- "rudderId": "5e9ada0e-5f50-4cb8-a015-f6842a7615fd",
- "sentAt": "2023-08-29 10:22:06.395377223 +0000 UTC",
- "type": "audienceList",
- "userId": "23423423"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer dummy-access",
- "Content-Type": "application/json",
- "developer-token": "dummy-dev-token"
- },
- "params": {
- "listId": "830441345",
- "customerId": "7693729833"
- },
- "body": {
- "JSON": {
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048"
- },
- {
- "hashedEmail": "34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436"
- },
- {
- "hashedEmail": "8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummy-access",
- "refresh_token": "dummy-refresh",
- "developer_token": "dummy-dev-token"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ hashedLastName:
+ 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '769-372-9833',
+ loginCustomerId: '870-483-0944',
+ subAccount: true,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'userID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ 'login-customer-id': '8704830944',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ mobileId: 'abcd-1234-567h',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ mobileId: 'abcd-1234-567h',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'abc@abc.com',
+ phone: '@09876543210',
+ firstName: 'abc',
+ lastName: 'efg',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ {
+ email: 'def@abc.com',
+ phone: '@09876543210',
+ firstName: 'def',
+ lastName: 'ghi',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error:
+ "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error:
+ "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ type: 'audiencelist',
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ properties: {
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error: 'listData is not present inside properties. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: true,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'mobileDeviceID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error: 'loginCustomerId is required as subAccount is true.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ delete: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 400,
+ error:
+ "Neither 'add' nor 'remove' property is present inside 'listData' or there are no attributes inside 'add' or 'remove' properties matching with the schema fields. Aborting message.",
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelisT',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: null,
+ lastName: 'jkl',
+ country: 'US',
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ add: [
+ {
+ email: 'ghi@abc.com',
+ phone: null,
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: null,
+ mobileId: '1245',
+ },
+ {
+ email: 'ghi@abc.com',
+ phone: '@09876543210',
+ firstName: 'ghi',
+ lastName: 'jkl',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ },
+ },
+ {
+ hashedEmail:
+ 'a3d3807256168f51fc644aef9bda6c7f15c850702be01cf4c77af26a37aec026',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '50ae61e841fac4e8f9e40baf2ad36ec868922ea48368c18f9535e47db56dd7fb',
+ hashedLastName:
+ '268f277c6d766d31334fda0f7a5533a185598d269e61c76a805870244828a5f1',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: false,
+ firstName: 'test',
+ lastName: null,
+ country: 'US',
+ postalCode: 0,
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'list111',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ countryCode: 'US',
+ postalCode: 0,
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: null,
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: null,
+ },
+ statusCode: 500,
+ error: 'OAuth - access token not found',
+ statTags: {
+ errorCategory: 'platform',
+ errorType: 'oAuthSecret',
+ destType: 'GOOGLE_ADWORDS_REMARKETING_LISTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ listId: 'list111',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ audienceId: 'aud1234',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'sudip@abc.com',
+ phone: false,
+ firstName: 'sudip',
+ lastName: null,
+ country: 'US',
+ postalCode: 0,
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: 'aud1234',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ 'a512ebb75e941411945c9a18bca4ecc315830e0b5cff8a525472c86c1f540844',
+ countryCode: 'US',
+ postalCode: 0,
+ },
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ anonymousId: '24ed22ae-0681-4882-8c33-012e298e1c17',
+ channel: 'sources',
+ context: {
+ destinationFields: 'email',
+ externalId: [
+ {
+ identifierType: 'email',
+ type: 'GOOGLE_ADWORDS_REMARKETING_LISTS-830441345',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_id: '2UcqQB4ygGtTBAvwCWl7xz8dJgt',
+ job_run_id: 'cjmsdip7m95b7aee7tpg',
+ task_run_id: 'cjmsdip7m95b7aee7tq0',
+ version: 'master',
+ },
+ },
+ event: 'Add_Audience',
+ messageId: 'bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'test1@mail.com',
+ },
+ {
+ email: 'test5@xmail.com',
+ },
+ {
+ email: 'test3@mail.com',
+ },
+ ],
+ },
+ },
+ recordId: 'a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5',
+ rudderId: '5e9ada0e-5f50-4cb8-a015-f6842a7615fd',
+ sentAt: '2023-08-29 10:22:06.395377223 +0000 UTC',
+ type: 'audienceList',
+ userId: '23423423',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '830441345',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ operations: [
+ {
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048',
+ },
+ {
+ hashedEmail:
+ '34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436',
+ },
+ {
+ hashedEmail:
+ '8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ anonymousId: '24ed22ae-0681-4882-8c33-012e298e1c17',
+ channel: 'sources',
+ context: {
+ destinationFields: 'email',
+ externalId: [
+ {
+ identifierType: 'email',
+ type: 'GOOGLE_ADWORDS_REMARKETING_LISTS-830441345',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_id: '2UcqQB4ygGtTBAvwCWl7xz8dJgt',
+ job_run_id: 'cjmsdip7m95b7aee7tpg',
+ task_run_id: 'cjmsdip7m95b7aee7tq0',
+ version: 'master',
+ },
+ },
+ event: 'Add_Audience',
+ messageId: 'bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test1@mail.com',
+ },
+ {
+ email: 'test5@xmail.com',
+ },
+ {
+ email: 'test3@mail.com',
+ },
+ ],
+ },
+ },
+ recordId: 'a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5',
+ rudderId: '5e9ada0e-5f50-4cb8-a015-f6842a7615fd',
+ sentAt: '2023-08-29 10:22:06.395377223 +0000 UTC',
+ type: 'audienceList',
+ userId: '23423423',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '830441345',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048',
+ },
+ {
+ hashedEmail:
+ '34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436',
+ },
+ {
+ hashedEmail:
+ '8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 20: adding consent object',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ userDataConsent: 'UNSPECIFIED',
+ personalizationConsent: 'GRANTED',
+ },
+ },
+ message: {
+ anonymousId: '24ed22ae-0681-4882-8c33-012e298e1c17',
+ channel: 'sources',
+ context: {
+ destinationFields: 'email',
+ externalId: [
+ {
+ identifierType: 'email',
+ type: 'GOOGLE_ADWORDS_REMARKETING_LISTS-830441345',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_id: '2UcqQB4ygGtTBAvwCWl7xz8dJgt',
+ job_run_id: 'cjmsdip7m95b7aee7tpg',
+ task_run_id: 'cjmsdip7m95b7aee7tq0',
+ version: 'master',
+ },
+ },
+ event: 'Add_Audience',
+ messageId: 'bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test1@mail.com',
+ },
+ {
+ email: 'test5@xmail.com',
+ },
+ {
+ email: 'test3@mail.com',
+ },
+ ],
+ },
+ },
+ recordId: 'a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5',
+ rudderId: '5e9ada0e-5f50-4cb8-a015-f6842a7615fd',
+ sentAt: '2023-08-29 10:22:06.395377223 +0000 UTC',
+ type: 'audienceList',
+ userId: '23423423',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '830441345',
+ customerId: '7693729833',
+ consent: {
+ adUserData: 'UNSPECIFIED',
+ adPersonalization: 'GRANTED',
+ },
+ },
+ body: {
+ JSON: {
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048',
+ },
+ {
+ hashedEmail:
+ '34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436',
+ },
+ {
+ hashedEmail:
+ '8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 20 : consent field values are discarded if it does not match allowed values',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ destination: {
+ Config: {
+ rudderAccountId: 'rudder-acc-id',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ userDataConsent: 'RANDOM',
+ personalizationConsent: 'RANDOM',
+ },
+ },
+ message: {
+ anonymousId: '24ed22ae-0681-4882-8c33-012e298e1c17',
+ channel: 'sources',
+ context: {
+ destinationFields: 'email',
+ externalId: [
+ {
+ identifierType: 'email',
+ type: 'GOOGLE_ADWORDS_REMARKETING_LISTS-830441345',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ job_id: '2UcqQB4ygGtTBAvwCWl7xz8dJgt',
+ job_run_id: 'cjmsdip7m95b7aee7tpg',
+ task_run_id: 'cjmsdip7m95b7aee7tq0',
+ version: 'master',
+ },
+ },
+ event: 'Add_Audience',
+ messageId: 'bd2d67ca-0c9a-4d3b-a2f8-35a3c3f75ba7',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test1@mail.com',
+ },
+ {
+ email: 'test5@xmail.com',
+ },
+ {
+ email: 'test3@mail.com',
+ },
+ ],
+ },
+ },
+ recordId: 'a071551c-87e0-48a7-aa5c-7c4144cec5cf/1/5',
+ rudderId: '5e9ada0e-5f50-4cb8-a015-f6842a7615fd',
+ sentAt: '2023-08-29 10:22:06.395377223 +0000 UTC',
+ type: 'audienceList',
+ userId: '23423423',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer dummy-access',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'dummy-dev-token',
+ },
+ params: {
+ listId: '830441345',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNKNOWN', adUserData: 'UNKNOWN' },
+ },
+ body: {
+ JSON: {
+ operations: [
+ {
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ '78310d2dd727b704ff9d9c4742d01941b1217b89f45ab71d1e9bf5a010144048',
+ },
+ {
+ hashedEmail:
+ '34a6406a076b943abfb9e97a6761e0c6b8cf049ab15b013412c57cf8370b5436',
+ },
+ {
+ hashedEmail:
+ '8075d00e5f006b95eb090bf50f5246bc3c18c3d771fa1edf967b033b274b8d84',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummy-access',
+ refresh_token: 'dummy-refresh',
+ developer_token: 'dummy-dev-token',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/google_adwords_remarketing_lists/router/data.ts b/test/integrations/destinations/google_adwords_remarketing_lists/router/data.ts
index 3d3de6a5875..31d5c72694c 100644
--- a/test/integrations/destinations/google_adwords_remarketing_lists/router/data.ts
+++ b/test/integrations/destinations/google_adwords_remarketing_lists/router/data.ts
@@ -1,555 +1,576 @@
export const data = [
- {
- name: 'google_adwords_remarketing_lists',
- description: 'Test 0',
- feature: 'router',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- input: [
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 1
- },
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- },
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 2
- },
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "userID"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245",
- "thirdPartyUserId": "useri1234"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- },
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 3
- },
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- },
- {
- "metadata": {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 4
- },
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
+ {
+ name: 'google_adwords_remarketing_lists',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'userID',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ thirdPartyUserId: 'useri1234',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
],
- destType: 'google_adwords_remarketing_lists',
+ },
+ enablePartialFailure: true,
},
- method: 'POST',
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
},
+ {
+ metadata: {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ destType: 'google_adwords_remarketing_lists',
},
- output: {
- response: {
- status: 200,
- body: {
- output: [
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl9101',
+ },
+ params: {
+ listId: '7090784486',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
{
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl9101"
- },
- "params": { "listId": "7090784486", "customerId": "7693729833" },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "hashedLastName": "dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 1
- }
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ hashedLastName:
+ 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- }
+ },
},
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl9101',
+ },
+ params: {
+ listId: '7090784486',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
+ { create: { userIdentifiers: [{ thirdPartyUserId: 'useri1234' }] } },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'userID',
+ },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl9101',
+ },
+ params: {
+ listId: '7090784486',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
{
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl9101"
- },
- "params": { "listId": "7090784486", "customerId": "7693729833" },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "thirdPartyUserId": "useri1234"
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 2
- }
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ hashedLastName:
+ 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "userID"
- }
- }
+ },
},
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 3,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
+ },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl9101',
+ },
+ params: {
+ listId: '7090784486',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
{
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl9101"
- },
- "params": { "listId": "7090784486", "customerId": "7693729833" },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "hashedLastName": "dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
- ],
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 3
- }
+ remove: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ hashedLastName:
+ 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251',
+ countryCode: 'US',
+ postalCode: '1245',
+ },
+ },
],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- }
+ },
},
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://googleads.googleapis.com/v15/customers/7693729833/offlineUserDataJobs',
+ headers: {
+ Authorization: 'Bearer abcd1234',
+ 'Content-Type': 'application/json',
+ 'developer-token': 'ijkl9101',
+ },
+ params: {
+ listId: '7090784486',
+ customerId: '7693729833',
+ consent: { adPersonalization: 'UNSPECIFIED', adUserData: 'UNSPECIFIED' },
+ },
+ body: {
+ JSON: {
+ enablePartialFailure: true,
+ operations: [
{
- "batchedRequest": [
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl9101"
- },
- "params": { "listId": "7090784486", "customerId": "7693729833" },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "remove": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "hashedLastName": "dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
+ create: {
+ userIdentifiers: [
+ {
+ hashedEmail:
+ 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ },
+ {
+ hashedPhoneNumber:
+ '8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45',
+ },
+ {
+ addressInfo: {
+ hashedFirstName:
+ '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
+ hashedLastName:
+ 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251',
+ countryCode: 'US',
+ postalCode: '1245',
},
- {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://googleads.googleapis.com/v14/customers/7693729833/offlineUserDataJobs",
- "headers": {
- "Authorization": "Bearer abcd1234",
- "Content-Type": "application/json",
- "developer-token": "ijkl9101"
- },
- "params": { "listId": "7090784486", "customerId": "7693729833" },
- "body": {
- "JSON": {
- "enablePartialFailure": true,
- "operations": [
- {
- "create": {
- "userIdentifiers": [
- {
- "hashedEmail": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- },
- {
- "hashedPhoneNumber": "8846dcb6ab2d73a0e67dbd569fa17cec2d9d391e5b05d1dd42919bc21ae82c45"
- },
- {
- "addressInfo": {
- "hashedFirstName": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
- "hashedLastName": "dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251",
- "countryCode": "US",
- "postalCode": "1245"
- }
- }
- ]
- }
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {}
- }
+ },
],
- "metadata": [
- {
- "secret": {
- "access_token": "abcd1234",
- "refresh_token": "efgh5678",
- "developer_token": "ijkl9101"
- },
- "jobId": 4
- }
- ],
- "batched": false,
- "statusCode": 200,
- "destination": {
- "Config": {
- "rudderAccountId": "258Yea7usSKNpbkIaesL9oJ9iYw",
- "listId": "7090784486",
- "customerId": "7693729833",
- "loginCustomerId": "",
- "subAccount": false,
- "userSchema": ["email", "phone", "addressInfo"],
- "isHashRequired": true,
- "typeOfList": "General"
- }
- }
- }
- ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ secret: {
+ access_token: 'abcd1234',
+ refresh_token: 'efgh5678',
+ developer_token: 'ijkl9101',
+ },
+ jobId: 4,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ rudderAccountId: '258Yea7usSKNpbkIaesL9oJ9iYw',
+ listId: '7090784486',
+ customerId: '7693729833',
+ loginCustomerId: '',
+ subAccount: false,
+ userSchema: ['email', 'phone', 'addressInfo'],
+ isHashRequired: true,
+ typeOfList: 'General',
},
+ },
},
+ ],
},
- }
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/google_cloud_function/router/data.ts b/test/integrations/destinations/google_cloud_function/router/data.ts
index 0661d4cb15a..50a559e27c7 100644
--- a/test/integrations/destinations/google_cloud_function/router/data.ts
+++ b/test/integrations/destinations/google_cloud_function/router/data.ts
@@ -20,9 +20,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '1',
- },
+ metadata: { jobId: '1', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -32,21 +30,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -61,9 +51,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -77,9 +65,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '2',
- },
+ metadata: { jobId: '2', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -89,21 +75,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -118,9 +96,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -135,9 +111,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '3',
- },
+ metadata: { jobId: '3', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -147,21 +121,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -176,9 +142,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -204,21 +168,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -233,9 +189,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
{
@@ -247,21 +201,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -276,13 +222,14 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
],
- metadata: [{ jobId: '1' }, { jobId: '3' }],
+ metadata: [
+ { jobId: '1', userId: 'u1' },
+ { jobId: '3', userId: 'u1' },
+ ],
batched: true,
statusCode: 200,
destination: {
@@ -306,7 +253,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: [{ jobId: '2' }],
+ metadata: [{ jobId: '2', userId: 'u1' }],
batched: false,
statusCode: 400,
error: '[GCF]:: Url not found. Aborting',
@@ -345,9 +292,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '1',
- },
+ metadata: { jobId: '1', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -357,21 +302,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -386,9 +323,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -402,9 +337,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '2',
- },
+ metadata: { jobId: '2', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -414,21 +347,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -443,9 +368,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -460,9 +383,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: {
- jobId: '3',
- },
+ metadata: { jobId: '3', userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -472,21 +393,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -501,9 +414,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -529,21 +440,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -558,9 +461,7 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
{
@@ -572,21 +473,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -601,13 +494,14 @@ export const data = [
emailOptOut: true,
masterAvatarTypeCode: 10,
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
],
- metadata: [{ jobId: '1' }, { jobId: '3' }],
+ metadata: [
+ { jobId: '1', userId: 'u1' },
+ { jobId: '3', userId: 'u1' },
+ ],
batched: true,
statusCode: 200,
destination: {
@@ -631,7 +525,7 @@ export const data = [
maxBatchSize: '2',
},
},
- metadata: [{ jobId: '2' }],
+ metadata: [{ jobId: '2', userId: 'u1' }],
batched: false,
statusCode: 400,
error: '[GCF]:: Url not found. Aborting',
diff --git a/test/integrations/destinations/googlesheets/router/data.ts b/test/integrations/destinations/googlesheets/router/data.ts
index 20fe270e5f6..bdc686efda3 100644
--- a/test/integrations/destinations/googlesheets/router/data.ts
+++ b/test/integrations/destinations/googlesheets/router/data.ts
@@ -14,62 +14,20 @@ export const data = [
Config: {
credentials: '{ sheets credentials }',
eventKeyMap: [
- {
- from: 'firstName',
- to: 'First Name',
- },
- {
- from: 'lastName',
- to: 'Last Name',
- },
- {
- from: 'birthday',
- to: 'Birthday',
- },
- {
- from: 'address.city',
- to: 'City',
- },
- {
- from: 'address.country',
- to: 'Country',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'offer',
- to: 'Offer',
- },
- {
- from: 'title',
- to: 'Title Page',
- },
- {
- from: 'Cart Value',
- to: 'Cart Value',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'context.app.build',
- to: 'App Build',
- },
- {
- from: 'context.app.name',
- to: 'App Name',
- },
- {
- from: 'context.library.name',
- to: 'Library Name',
- },
- {
- from: 'context.ip',
- to: 'IP',
- },
+ { from: 'firstName', to: 'First Name' },
+ { from: 'lastName', to: 'Last Name' },
+ { from: 'birthday', to: 'Birthday' },
+ { from: 'address.city', to: 'City' },
+ { from: 'address.country', to: 'Country' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'offer', to: 'Offer' },
+ { from: 'title', to: 'Title Page' },
+ { from: 'Cart Value', to: 'Cart Value' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'context.app.build', to: 'App Build' },
+ { from: 'context.app.name', to: 'App Name' },
+ { from: 'context.library.name', to: 'Library Name' },
+ { from: 'context.ip', to: 'IP' },
],
sheetId: 'rudder_sheet_id',
sheetName: 'rudder_sheet',
@@ -121,10 +79,7 @@ export const data = [
married: true,
customerType: 'Prime',
custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
- custom_mappings: {
- Office: 'Trastkiv',
- Country: 'Russia',
- },
+ custom_mappings: { Office: 'Trastkiv', Country: 'Russia' },
address: {
city: 'kolkata',
country: 'India',
@@ -136,71 +91,27 @@ export const data = [
integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
destination: {
Config: {
credentials: '{ sheets credentials }',
eventKeyMap: [
- {
- from: 'firstName',
- to: 'First Name',
- },
- {
- from: 'lastName',
- to: 'Last Name',
- },
- {
- from: 'birthday',
- to: 'Birthday',
- },
- {
- from: 'address.city',
- to: 'City',
- },
- {
- from: 'address.country',
- to: 'Country',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'offer',
- to: 'Offer',
- },
- {
- from: 'title',
- to: 'Title Page',
- },
- {
- from: 'Cart Value',
- to: 'Cart Value',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'context.app.build',
- to: 'App Build',
- },
- {
- from: 'context.app.name',
- to: 'App Name',
- },
- {
- from: 'context.library.name',
- to: 'Library Name',
- },
- {
- from: 'context.ip',
- to: 'IP',
- },
+ { from: 'firstName', to: 'First Name' },
+ { from: 'lastName', to: 'Last Name' },
+ { from: 'birthday', to: 'Birthday' },
+ { from: 'address.city', to: 'City' },
+ { from: 'address.country', to: 'Country' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'offer', to: 'Offer' },
+ { from: 'title', to: 'Title Page' },
+ { from: 'Cart Value', to: 'Cart Value' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'context.app.build', to: 'App Build' },
+ { from: 'context.app.name', to: 'App Name' },
+ { from: 'context.library.name', to: 'Library Name' },
+ { from: 'context.ip', to: 'IP' },
],
sheetId: 'rudder_sheet_id',
sheetName: 'rudder_sheet',
@@ -232,26 +143,16 @@ export const data = [
name: 'generic_x86',
type: 'android',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '0.1.4',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '0.1.4' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
os: { name: 'Android', version: '9' },
screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
},
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'googlesheets',
@@ -272,50 +173,17 @@ export const data = [
attributeKey: 'messageId',
attributeValue: '84e26acc-56a5-4835-8233-591137fca468',
},
- '1': {
- attributeKey: 'First Name',
- attributeValue: 'James',
- },
- '2': {
- attributeKey: 'Last Name',
- attributeValue: 'Doe',
- },
- '3': {
- attributeKey: 'Birthday',
- attributeValue: '1614775793',
- },
- '4': {
- attributeKey: 'City',
- attributeValue: 'kolkata',
- },
- '5': {
- attributeKey: 'Country',
- attributeValue: 'India',
- },
- '6': {
- attributeKey: 'Revenue',
- attributeValue: '',
- },
- '7': {
- attributeKey: 'Offer',
- attributeValue: '',
- },
- '8': {
- attributeKey: 'Title Page',
- attributeValue: '',
- },
- '9': {
- attributeKey: 'Cart Value',
- attributeValue: '',
- },
- '10': {
- attributeKey: 'Revenue',
- attributeValue: '',
- },
- '11': {
- attributeKey: 'App Build',
- attributeValue: '1.0.0',
- },
+ '1': { attributeKey: 'First Name', attributeValue: 'James' },
+ '2': { attributeKey: 'Last Name', attributeValue: 'Doe' },
+ '3': { attributeKey: 'Birthday', attributeValue: '1614775793' },
+ '4': { attributeKey: 'City', attributeValue: 'kolkata' },
+ '5': { attributeKey: 'Country', attributeValue: 'India' },
+ '6': { attributeKey: 'Revenue', attributeValue: '' },
+ '7': { attributeKey: 'Offer', attributeValue: '' },
+ '8': { attributeKey: 'Title Page', attributeValue: '' },
+ '9': { attributeKey: 'Cart Value', attributeValue: '' },
+ '10': { attributeKey: 'Revenue', attributeValue: '' },
+ '11': { attributeKey: 'App Build', attributeValue: '1.0.0' },
'12': {
attributeKey: 'App Name',
attributeValue: 'RudderLabs JavaScript SDK',
@@ -324,74 +192,29 @@ export const data = [
attributeKey: 'Library Name',
attributeValue: 'RudderLabs JavaScript SDK',
},
- '14': {
- attributeKey: 'IP',
- attributeValue: '0.0.0.0',
- },
+ '14': { attributeKey: 'IP', attributeValue: '0.0.0.0' },
},
},
{
message: {
- '0': {
- attributeKey: 'messageId',
- attributeValue: '',
- },
- '1': {
- attributeKey: 'First Name',
- attributeValue: '',
- },
- '2': {
- attributeKey: 'Last Name',
- attributeValue: '',
- },
- '3': {
- attributeKey: 'Birthday',
- attributeValue: '',
- },
- '4': {
- attributeKey: 'City',
- attributeValue: '',
- },
- '5': {
- attributeKey: 'Country',
- attributeValue: '',
- },
- '6': {
- attributeKey: 'Revenue',
- attributeValue: 5.99,
- },
- '7': {
- attributeKey: 'Offer',
- attributeValue: 'Discount',
- },
- '8': {
- attributeKey: 'Title Page',
- attributeValue: '',
- },
- '9': {
- attributeKey: 'Cart Value',
- attributeValue: '',
- },
- '10': {
- attributeKey: 'Revenue',
- attributeValue: 5.99,
- },
- '11': {
- attributeKey: 'App Build',
- attributeValue: '1',
- },
- '12': {
- attributeKey: 'App Name',
- attributeValue: 'RudderAndroidClient',
- },
+ '0': { attributeKey: 'messageId', attributeValue: '' },
+ '1': { attributeKey: 'First Name', attributeValue: '' },
+ '2': { attributeKey: 'Last Name', attributeValue: '' },
+ '3': { attributeKey: 'Birthday', attributeValue: '' },
+ '4': { attributeKey: 'City', attributeValue: '' },
+ '5': { attributeKey: 'Country', attributeValue: '' },
+ '6': { attributeKey: 'Revenue', attributeValue: 5.99 },
+ '7': { attributeKey: 'Offer', attributeValue: 'Discount' },
+ '8': { attributeKey: 'Title Page', attributeValue: '' },
+ '9': { attributeKey: 'Cart Value', attributeValue: '' },
+ '10': { attributeKey: 'Revenue', attributeValue: 5.99 },
+ '11': { attributeKey: 'App Build', attributeValue: '1' },
+ '12': { attributeKey: 'App Name', attributeValue: 'RudderAndroidClient' },
'13': {
attributeKey: 'Library Name',
attributeValue: 'com.rudderstack.android.sdk.core',
},
- '14': {
- attributeKey: 'IP',
- attributeValue: '14.5.67.21',
- },
+ '14': { attributeKey: 'IP', attributeValue: '14.5.67.21' },
},
},
],
@@ -399,12 +222,8 @@ export const data = [
spreadSheet: 'rudder_sheet',
},
metadata: [
- {
- jobId: 1,
- },
- {
- jobId: 2,
- },
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -412,62 +231,20 @@ export const data = [
Config: {
credentials: '{ sheets credentials }',
eventKeyMap: [
- {
- from: 'firstName',
- to: 'First Name',
- },
- {
- from: 'lastName',
- to: 'Last Name',
- },
- {
- from: 'birthday',
- to: 'Birthday',
- },
- {
- from: 'address.city',
- to: 'City',
- },
- {
- from: 'address.country',
- to: 'Country',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'offer',
- to: 'Offer',
- },
- {
- from: 'title',
- to: 'Title Page',
- },
- {
- from: 'Cart Value',
- to: 'Cart Value',
- },
- {
- from: 'revenue',
- to: 'Revenue',
- },
- {
- from: 'context.app.build',
- to: 'App Build',
- },
- {
- from: 'context.app.name',
- to: 'App Name',
- },
- {
- from: 'context.library.name',
- to: 'Library Name',
- },
- {
- from: 'context.ip',
- to: 'IP',
- },
+ { from: 'firstName', to: 'First Name' },
+ { from: 'lastName', to: 'Last Name' },
+ { from: 'birthday', to: 'Birthday' },
+ { from: 'address.city', to: 'City' },
+ { from: 'address.country', to: 'Country' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'offer', to: 'Offer' },
+ { from: 'title', to: 'Title Page' },
+ { from: 'Cart Value', to: 'Cart Value' },
+ { from: 'revenue', to: 'Revenue' },
+ { from: 'context.app.build', to: 'App Build' },
+ { from: 'context.app.name', to: 'App Name' },
+ { from: 'context.library.name', to: 'Library Name' },
+ { from: 'context.ip', to: 'IP' },
],
sheetId: 'rudder_sheet_id',
sheetName: 'rudder_sheet',
diff --git a/test/integrations/destinations/heap/router/data.ts b/test/integrations/destinations/heap/router/data.ts
index 24efbf4b157..3aa8fae2ca2 100644
--- a/test/integrations/destinations/heap/router/data.ts
+++ b/test/integrations/destinations/heap/router/data.ts
@@ -11,9 +11,7 @@ export const data = [
input: [
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -24,9 +22,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -38,28 +34,15 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ integrations: { All: true },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
messageId: 'fca2e71a-5d30-48e1-ba45-761c16e3820f',
originalTimestamp: '2020-01-16T13:21:59.076Z',
receivedAt: '2020-01-16T18:52:03.871+05:30',
@@ -72,9 +55,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -85,9 +66,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -99,35 +78,19 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'Send Transactional Email',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'c0c5b892-0d54-449f-b85f-ebb39ff04e67',
originalTimestamp: '2020-01-16T13:23:20.844Z',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
receivedAt: '2020-01-16T18:53:23.804+05:30',
request_ip: '[::1]:62312',
sentAt: '2020-01-16T13:23:23.782Z',
@@ -138,9 +101,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -151,9 +112,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 4, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -165,29 +124,16 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'Send Transactional Email',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'c0c5b892-0d54-449f-b85f-ebb39ff04e67',
originalTimestamp: '2020-01-16T13:23:20.844Z',
properties: {
@@ -219,18 +165,12 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://heapanalytics.com/api/add_user_properties',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
identity: 'sampath',
- properties: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ properties: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
app_id: '',
},
XML: {},
@@ -240,17 +180,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -268,19 +202,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://heapanalytics.com/api/track',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
identity: 'sampath',
event: 'Send Transactional Email',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
app_id: '',
timestamp: '2020-01-16T18:53:20.866+05:30',
},
@@ -291,17 +219,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -319,19 +241,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://heapanalytics.com/api/track',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
identity: 'sampath',
event: 'Send Transactional Email',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
app_id: '',
timestamp: '2020-01-16T18:53:20.866+05:30',
idempotency_key: '1234',
@@ -343,17 +259,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -382,9 +292,7 @@ export const data = [
input: [
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -395,9 +303,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -409,28 +315,15 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ integrations: { All: true },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
messageId: 'fca2e71a-5d30-48e1-ba45-761c16e3820f',
originalTimestamp: '2020-01-16T13:21:59.076Z',
receivedAt: '2020-01-16T18:52:03.871+05:30',
@@ -443,9 +336,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -456,9 +347,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -470,35 +359,19 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'Send Transactional Email',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'c0c5b892-0d54-449f-b85f-ebb39ff04e67',
originalTimestamp: '2020-01-16T13:23:20.844Z',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
receivedAt: '2020-01-16T18:53:23.804+05:30',
request_ip: '[::1]:62312',
sentAt: '2020-01-16T13:23:23.782Z',
@@ -509,9 +382,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -522,9 +393,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -536,28 +405,15 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
- integrations: {
- All: true,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ integrations: { All: true },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
messageId: 'fca2e71a-5d30-48e1-ba45-761c16e3820f',
originalTimestamp: '2020-01-16T13:21:59.076Z',
receivedAt: '2020-01-16T18:52:03.871+05:30',
@@ -569,9 +425,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -582,9 +436,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: {
- jobId: 5,
- },
+ metadata: { jobId: 5, userId: 'u1' },
message: {
anonymousId: 'sampath',
channel: 'web',
@@ -596,35 +448,19 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
},
event: 'Send Transactional Email',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'c0c5b892-0d54-449f-b85f-ebb39ff04e67',
originalTimestamp: '2020-01-16T13:23:20.844Z',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
receivedAt: '2020-01-16T18:53:23.804+05:30',
request_ip: '[::1]:62312',
sentAt: '2020-01-16T13:23:23.782Z',
@@ -649,18 +485,12 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://heapanalytics.com/api/add_user_properties',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
identity: 'sampath',
- properties: {
- anonymousId: 'sampath',
- email: 'sampath@gmail.com',
- },
+ properties: { anonymousId: 'sampath', email: 'sampath@gmail.com' },
app_id: '',
},
XML: {},
@@ -670,17 +500,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -698,19 +522,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://heapanalytics.com/api/track',
- headers: {
- 'Content-Type': 'application/json',
- Accept: 'application/json',
- },
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
params: {},
body: {
JSON: {
identity: 'sampath',
event: 'Send Transactional Email',
- properties: {
- subject: 'Welcome to My App!',
- variation: 'A',
- },
+ properties: { subject: 'Welcome to My App!', variation: 'A' },
app_id: '',
timestamp: '2020-01-16T18:53:20.866+05:30',
},
@@ -721,17 +539,11 @@ export const data = [
files: {},
userId: 'sampath',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -745,9 +557,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -758,11 +568,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: [
- {
- jobId: 4,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
batched: false,
statusCode: 400,
error: 'invalid message type for heap',
@@ -777,9 +583,7 @@ export const data = [
},
{
destination: {
- Config: {
- appId: '',
- },
+ Config: { appId: '' },
DestinationDefinition: {
DisplayName: 'Heap.io',
ID: '1WTbl0l5GjOQKOvfmcGwk0T49kV',
@@ -790,11 +594,7 @@ export const data = [
Name: 'heap test',
Transformations: [],
},
- metadata: [
- {
- jobId: 5,
- },
- ],
+ metadata: [{ jobId: 5, userId: 'u1' }],
batched: false,
statusCode: 400,
error: 'message type page not supported for heap',
diff --git a/test/integrations/destinations/hs/network.ts b/test/integrations/destinations/hs/network.ts
new file mode 100644
index 00000000000..e29cc275622
--- /dev/null
+++ b/test/integrations/destinations/hs/network.ts
@@ -0,0 +1,664 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/properties/v1/contacts/properties?hapikey=dummy-apikey',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: [
+ { name: 'company_size', type: 'string' },
+ { name: 'date_of_birth', type: 'string' },
+ { name: 'days_to_close', type: 'number' },
+ {
+ name: 'date_submitted',
+ type: 'date',
+ },
+ {
+ name: 'days_create',
+ type: 'date',
+ },
+ {
+ name: 'days_closed',
+ type: 'date',
+ },
+ { name: 'degree', type: 'string' },
+ { name: 'field_of_study', type: 'string' },
+ { name: 'first_conversion_date', type: 'datetime' },
+ { name: 'first_conversion_event_name', type: 'string' },
+ { name: 'first_deal_created_date', type: 'datetime' },
+ { name: 'gender', type: 'string' },
+ { name: 'graduation_date', type: 'string' },
+ { name: 'hs_additional_emails', type: 'enumeration' },
+ { name: 'hs_all_contact_vids', type: 'enumeration' },
+ {
+ name: 'hs_analytics_first_touch_converting_campaign',
+ type: 'string',
+ },
+ { name: 'hs_analytics_last_touch_converting_campaign', type: 'string' },
+ { name: 'hs_avatar_filemanager_key', type: 'string' },
+ { name: 'hs_calculated_form_submissions', type: 'enumeration' },
+ { name: 'hs_calculated_merged_vids', type: 'enumeration' },
+ { name: 'hs_calculated_mobile_number', type: 'string' },
+ { name: 'hs_calculated_phone_number', type: 'string' },
+ { name: 'hs_calculated_phone_number_area_code', type: 'string' },
+ { name: 'hs_calculated_phone_number_country_code', type: 'string' },
+ { name: 'hs_calculated_phone_number_region_code', type: 'string' },
+ { name: 'hs_content_membership_email_confirmed', type: 'bool' },
+ { name: 'hs_content_membership_notes', type: 'string' },
+ { name: 'hs_content_membership_registered_at', type: 'datetime' },
+ {
+ name: 'hs_content_membership_registration_domain_sent_to',
+ type: 'string',
+ },
+ {
+ name: 'hs_content_membership_registration_email_sent_at',
+ type: 'datetime',
+ },
+ { name: 'hs_content_membership_status', type: 'enumeration' },
+ { name: 'hs_conversations_visitor_email', type: 'string' },
+ { name: 'hs_created_by_conversations', type: 'bool' },
+ { name: 'hs_created_by_user_id', type: 'string' },
+ { name: 'hs_createdate', type: 'datetime' },
+ { name: 'hs_document_last_revisited', type: 'datetime' },
+ { name: 'hs_email_domain', type: 'string' },
+ { name: 'hs_email_quarantined', type: 'bool' },
+ { name: 'hs_email_quarantined_reason', type: 'enumeration' },
+ { name: 'hs_email_recipient_fatigue_recovery_time', type: 'datetime' },
+ { name: 'hs_email_sends_since_last_engagement', type: 'number' },
+ { name: 'hs_emailconfirmationstatus', type: 'enumeration' },
+ { name: 'hs_facebook_ad_clicked', type: 'bool' },
+ { name: 'hs_feedback_last_nps_follow_up', type: 'string' },
+ { name: 'hs_feedback_last_nps_rating', type: 'enumeration' },
+ { name: 'hs_feedback_last_survey_date', type: 'datetime' },
+ { name: 'hs_feedback_show_nps_web_survey', type: 'bool' },
+ { name: 'hs_google_click_id', type: 'string' },
+ { name: 'hs_ip_timezone', type: 'string' },
+ { name: 'hs_is_contact', type: 'bool' },
+ { name: 'hs_last_sales_activity_date', type: 'datetime' },
+ { name: 'hs_lastmodifieddate', type: 'datetime' },
+ { name: 'hs_lead_status', type: 'enumeration' },
+ { name: 'hs_legal_basis', type: 'enumeration' },
+ { name: 'hs_merged_object_ids', type: 'enumeration' },
+ { name: 'hs_object_id', type: 'number' },
+ { name: 'hs_predictivecontactscore_v2', type: 'number' },
+ { name: 'hs_predictivescoringtier', type: 'enumeration' },
+ { name: 'hs_sales_email_last_clicked', type: 'datetime' },
+ { name: 'hs_sales_email_last_opened', type: 'datetime' },
+ {
+ name: 'hs_searchable_calculated_international_mobile_number',
+ type: 'phone_number',
+ },
+ {
+ name: 'hs_searchable_calculated_international_phone_number',
+ type: 'phone_number',
+ },
+ {
+ name: 'hs_searchable_calculated_mobile_number',
+ type: 'phone_number',
+ },
+ { name: 'hs_searchable_calculated_phone_number', type: 'phone_number' },
+ { name: 'hs_sequences_is_enrolled', type: 'bool' },
+ { name: 'hs_updated_by_user_id', type: 'string' },
+ { name: 'hubspot_owner_assigneddate', type: 'datetime' },
+ { name: 'ip_city', type: 'string' },
+ { name: 'ip_country', type: 'string' },
+ { name: 'ip_country_code', type: 'string' },
+ { name: 'ip_latlon', type: 'string' },
+ { name: 'ip_state', type: 'string' },
+ { name: 'ip_state_code', type: 'string' },
+ { name: 'ip_zipcode', type: 'string' },
+ { name: 'job_function', type: 'string' },
+ { name: 'lastmodifieddate', type: 'datetime' },
+ { name: 'marital_status', type: 'string' },
+ { name: 'military_status', type: 'string' },
+ { name: 'num_associated_deals', type: 'number' },
+ { name: 'num_conversion_events', type: 'number' },
+ { name: 'num_unique_conversion_events', type: 'number' },
+ { name: 'recent_conversion_date', type: 'datetime' },
+ { name: 'recent_conversion_event_name', type: 'string' },
+ { name: 'recent_deal_amount', type: 'number' },
+ { name: 'recent_deal_close_date', type: 'datetime' },
+ { name: 'relationship_status', type: 'string' },
+ { name: 'school', type: 'string' },
+ { name: 'seniority', type: 'string' },
+ { name: 'start_date', type: 'string' },
+ { name: 'test_date', type: 'date' },
+ { name: 'test_key', type: 'string' },
+ { name: 'test_prop', type: 'string' },
+ { name: 'test_property', type: 'string' },
+ { name: 'total_revenue', type: 'number' },
+ { name: 'work_email', type: 'string' },
+ { name: 'firstname', type: 'string' },
+ { name: 'hs_analytics_first_url', type: 'string' },
+ { name: 'hs_email_delivered', type: 'number' },
+ { name: 'hs_email_optout_7283808', type: 'enumeration' },
+ { name: 'twitterhandle', type: 'string' },
+ { name: 'currentlyinworkflow', type: 'enumeration' },
+ { name: 'hs_analytics_last_url', type: 'string' },
+ { name: 'hs_email_open', type: 'number' },
+ { name: 'fax', type: 'string' },
+ { name: 'hs_analytics_first_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_email_name', type: 'string' },
+ { name: 'hs_email_last_send_date', type: 'datetime' },
+ { name: 'address', type: 'string' },
+ { name: 'engagements_last_meeting_booked', type: 'datetime' },
+ { name: 'engagements_last_meeting_booked_campaign', type: 'string' },
+ { name: 'engagements_last_meeting_booked_medium', type: 'string' },
+ { name: 'engagements_last_meeting_booked_source', type: 'string' },
+ { name: 'hs_analytics_first_visit_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_open_date', type: 'datetime' },
+ { name: 'hs_sales_email_last_replied', type: 'datetime' },
+ { name: 'hubspot_owner_id', type: 'enumeration' },
+ { name: 'notes_last_contacted', type: 'datetime' },
+ { name: 'notes_last_updated', type: 'datetime' },
+ { name: 'notes_next_activity_date', type: 'datetime' },
+ { name: 'num_contacted_notes', type: 'number' },
+ { name: 'num_notes', type: 'number' },
+ { name: 'surveymonkeyeventlastupdated', type: 'number' },
+ { name: 'webinareventlastupdated', type: 'number' },
+ { name: 'city', type: 'string' },
+ { name: 'hs_analytics_last_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_click_date', type: 'datetime' },
+ { name: 'hubspot_team_id', type: 'enumeration' },
+ { name: 'hs_all_owner_ids', type: 'enumeration' },
+ { name: 'hs_analytics_last_visit_timestamp', type: 'datetime' },
+ { name: 'hs_email_first_send_date', type: 'datetime' },
+ { name: 'state', type: 'string' },
+ { name: 'hs_all_team_ids', type: 'enumeration' },
+ { name: 'hs_analytics_source', type: 'enumeration' },
+ { name: 'hs_email_first_open_date', type: 'datetime' },
+ { name: 'zip', type: 'string' },
+ { name: 'country', type: 'string' },
+ { name: 'hs_all_accessible_team_ids', type: 'enumeration' },
+ { name: 'hs_analytics_source_data_1', type: 'string' },
+ { name: 'hs_email_first_click_date', type: 'datetime' },
+ { name: 'hs_analytics_source_data_2', type: 'string' },
+ { name: 'hs_email_is_ineligible', type: 'bool' },
+ { name: 'hs_language', type: 'enumeration' },
+ { name: 'hs_analytics_first_referrer', type: 'string' },
+ { name: 'jobtitle', type: 'string' },
+ { name: 'hs_analytics_last_referrer', type: 'string' },
+ { name: 'message', type: 'string' },
+ { name: 'closedate', type: 'datetime' },
+ { name: 'hs_analytics_average_page_views', type: 'number' },
+ { name: 'hs_analytics_revenue', type: 'number' },
+ { name: 'hs_lifecyclestage_lead_date', type: 'datetime' },
+ {
+ name: 'hs_lifecyclestage_marketingqualifiedlead_date',
+ type: 'datetime',
+ },
+ { name: 'hs_lifecyclestage_opportunity_date', type: 'datetime' },
+ { name: 'lifecyclestage', type: 'enumeration' },
+ { name: 'hs_lifecyclestage_salesqualifiedlead_date', type: 'datetime' },
+ { name: 'createdate', type: 'datetime' },
+ { name: 'hs_lifecyclestage_evangelist_date', type: 'datetime' },
+ { name: 'hs_lifecyclestage_customer_date', type: 'datetime' },
+ { name: 'hubspotscore', type: 'number' },
+ { name: 'company', type: 'string' },
+ { name: 'hs_lifecyclestage_subscriber_date', type: 'datetime' },
+ { name: 'hs_lifecyclestage_other_date', type: 'datetime' },
+ { name: 'website', type: 'string' },
+ { name: 'numemployees', type: 'enumeration' },
+ { name: 'annualrevenue', type: 'string' },
+ { name: 'industry', type: 'string' },
+ { name: 'associatedcompanyid', type: 'number' },
+ { name: 'associatedcompanylastupdated', type: 'number' },
+ { name: 'hs_predictivecontactscorebucket', type: 'enumeration' },
+ { name: 'hs_predictivecontactscore', type: 'number' },
+ ],
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/properties/v1/contacts/properties',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: [
+ { name: 'company_size', type: 'string' },
+ { name: 'date_of_birth', type: 'string' },
+ { name: 'days_to_close', type: 'number' },
+ {
+ name: 'date_submitted',
+ type: 'date',
+ },
+ {
+ name: 'date_created',
+ type: 'date',
+ },
+ {
+ name: 'date_closed',
+ type: 'date',
+ },
+ { name: 'degree', type: 'string' },
+ { name: 'field_of_study', type: 'string' },
+ { name: 'first_conversion_date', type: 'datetime' },
+ { name: 'first_conversion_event_name', type: 'string' },
+ { name: 'first_deal_created_date', type: 'datetime' },
+ { name: 'gender', type: 'string' },
+ { name: 'graduation_date', type: 'string' },
+ { name: 'hs_additional_emails', type: 'enumeration' },
+ { name: 'hs_all_contact_vids', type: 'enumeration' },
+ {
+ name: 'hs_analytics_first_touch_converting_campaign',
+ type: 'string',
+ },
+ { name: 'hs_analytics_last_touch_converting_campaign', type: 'string' },
+ { name: 'hs_avatar_filemanager_key', type: 'string' },
+ { name: 'hs_calculated_form_submissions', type: 'enumeration' },
+ { name: 'hs_calculated_merged_vids', type: 'enumeration' },
+ { name: 'hs_calculated_mobile_number', type: 'string' },
+ { name: 'hs_calculated_phone_number', type: 'string' },
+ { name: 'hs_calculated_phone_number_area_code', type: 'string' },
+ { name: 'hs_calculated_phone_number_country_code', type: 'string' },
+ { name: 'hs_calculated_phone_number_region_code', type: 'string' },
+ { name: 'hs_content_membership_email_confirmed', type: 'bool' },
+ { name: 'hs_content_membership_notes', type: 'string' },
+ { name: 'hs_content_membership_registered_at', type: 'datetime' },
+ {
+ name: 'hs_content_membership_registration_domain_sent_to',
+ type: 'string',
+ },
+ {
+ name: 'hs_content_membership_registration_email_sent_at',
+ type: 'datetime',
+ },
+ { name: 'hs_content_membership_status', type: 'enumeration' },
+ { name: 'hs_conversations_visitor_email', type: 'string' },
+ { name: 'hs_created_by_conversations', type: 'bool' },
+ { name: 'hs_created_by_user_id', type: 'string' },
+ { name: 'hs_createdate', type: 'datetime' },
+ { name: 'hs_document_last_revisited', type: 'datetime' },
+ { name: 'hs_email_domain', type: 'string' },
+ { name: 'hs_email_quarantined', type: 'bool' },
+ { name: 'hs_email_quarantined_reason', type: 'enumeration' },
+ { name: 'hs_email_recipient_fatigue_recovery_time', type: 'datetime' },
+ { name: 'hs_email_sends_since_last_engagement', type: 'number' },
+ { name: 'hs_emailconfirmationstatus', type: 'enumeration' },
+ { name: 'hs_facebook_ad_clicked', type: 'bool' },
+ { name: 'hs_feedback_last_nps_follow_up', type: 'string' },
+ { name: 'hs_feedback_last_nps_rating', type: 'enumeration' },
+ { name: 'hs_feedback_last_survey_date', type: 'datetime' },
+ { name: 'hs_feedback_show_nps_web_survey', type: 'bool' },
+ { name: 'hs_google_click_id', type: 'string' },
+ { name: 'hs_ip_timezone', type: 'string' },
+ { name: 'hs_is_contact', type: 'bool' },
+ { name: 'hs_last_sales_activity_date', type: 'datetime' },
+ { name: 'hs_lastmodifieddate', type: 'datetime' },
+ { name: 'hs_lead_status', type: 'enumeration' },
+ { name: 'hs_legal_basis', type: 'enumeration' },
+ { name: 'hs_merged_object_ids', type: 'enumeration' },
+ { name: 'hs_object_id', type: 'number' },
+ { name: 'hs_predictivecontactscore_v2', type: 'number' },
+ { name: 'hs_predictivescoringtier', type: 'enumeration' },
+ { name: 'hs_sales_email_last_clicked', type: 'datetime' },
+ { name: 'hs_sales_email_last_opened', type: 'datetime' },
+ {
+ name: 'hs_searchable_calculated_international_mobile_number',
+ type: 'phone_number',
+ },
+ {
+ name: 'hs_searchable_calculated_international_phone_number',
+ type: 'phone_number',
+ },
+ {
+ name: 'hs_searchable_calculated_mobile_number',
+ type: 'phone_number',
+ },
+ { name: 'hs_searchable_calculated_phone_number', type: 'phone_number' },
+ { name: 'hs_sequences_is_enrolled', type: 'bool' },
+ { name: 'hs_updated_by_user_id', type: 'string' },
+ { name: 'hubspot_owner_assigneddate', type: 'datetime' },
+ { name: 'ip_city', type: 'string' },
+ { name: 'ip_country', type: 'string' },
+ { name: 'ip_country_code', type: 'string' },
+ { name: 'ip_latlon', type: 'string' },
+ { name: 'ip_state', type: 'string' },
+ { name: 'ip_state_code', type: 'string' },
+ { name: 'ip_zipcode', type: 'string' },
+ { name: 'job_function', type: 'string' },
+ { name: 'lastmodifieddate', type: 'datetime' },
+ { name: 'marital_status', type: 'string' },
+ { name: 'military_status', type: 'string' },
+ { name: 'num_associated_deals', type: 'number' },
+ { name: 'num_conversion_events', type: 'number' },
+ { name: 'num_unique_conversion_events', type: 'number' },
+ { name: 'recent_conversion_date', type: 'datetime' },
+ { name: 'recent_conversion_event_name', type: 'string' },
+ { name: 'recent_deal_amount', type: 'number' },
+ { name: 'recent_deal_close_date', type: 'datetime' },
+ { name: 'relationship_status', type: 'string' },
+ { name: 'school', type: 'string' },
+ { name: 'seniority', type: 'string' },
+ { name: 'start_date', type: 'string' },
+ { name: 'test_date', type: 'date' },
+ { name: 'test_key', type: 'string' },
+ { name: 'test_prop', type: 'string' },
+ { name: 'test_property', type: 'string' },
+ { name: 'total_revenue', type: 'number' },
+ { name: 'work_email', type: 'string' },
+ { name: 'firstname', type: 'string' },
+ { name: 'hs_analytics_first_url', type: 'string' },
+ { name: 'hs_email_delivered', type: 'number' },
+ { name: 'hs_email_optout_7283808', type: 'enumeration' },
+ { name: 'twitterhandle', type: 'string' },
+ { name: 'currentlyinworkflow', type: 'enumeration' },
+ { name: 'hs_analytics_last_url', type: 'string' },
+ { name: 'hs_email_open', type: 'number' },
+ { name: 'fax', type: 'string' },
+ { name: 'hs_analytics_first_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_email_name', type: 'string' },
+ { name: 'hs_email_last_send_date', type: 'datetime' },
+ { name: 'address', type: 'string' },
+ { name: 'engagements_last_meeting_booked', type: 'datetime' },
+ { name: 'engagements_last_meeting_booked_campaign', type: 'string' },
+ { name: 'engagements_last_meeting_booked_medium', type: 'string' },
+ { name: 'engagements_last_meeting_booked_source', type: 'string' },
+ { name: 'hs_analytics_first_visit_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_open_date', type: 'datetime' },
+ { name: 'hs_sales_email_last_replied', type: 'datetime' },
+ { name: 'hubspot_owner_id', type: 'enumeration' },
+ { name: 'notes_last_contacted', type: 'datetime' },
+ { name: 'notes_last_updated', type: 'datetime' },
+ { name: 'notes_next_activity_date', type: 'datetime' },
+ { name: 'num_contacted_notes', type: 'number' },
+ { name: 'num_notes', type: 'number' },
+ { name: 'surveymonkeyeventlastupdated', type: 'number' },
+ { name: 'webinareventlastupdated', type: 'number' },
+ { name: 'city', type: 'string' },
+ { name: 'hs_analytics_last_timestamp', type: 'datetime' },
+ { name: 'hs_email_last_click_date', type: 'datetime' },
+ { name: 'hubspot_team_id', type: 'enumeration' },
+ { name: 'hs_all_owner_ids', type: 'enumeration' },
+ { name: 'hs_analytics_last_visit_timestamp', type: 'datetime' },
+ { name: 'hs_email_first_send_date', type: 'datetime' },
+ { name: 'state', type: 'string' },
+ { name: 'hs_all_team_ids', type: 'enumeration' },
+ { name: 'hs_analytics_source', type: 'enumeration' },
+ { name: 'hs_email_first_open_date', type: 'datetime' },
+ { name: 'zip', type: 'string' },
+ { name: 'country', type: 'string' },
+ { name: 'hs_all_accessible_team_ids', type: 'enumeration' },
+ { name: 'hs_analytics_source_data_1', type: 'string' },
+ { name: 'hs_email_first_click_date', type: 'datetime' },
+ { name: 'hs_analytics_source_data_2', type: 'string' },
+ { name: 'hs_email_is_ineligible', type: 'bool' },
+ { name: 'hs_language', type: 'enumeration' },
+ { name: 'hs_analytics_first_referrer', type: 'string' },
+ { name: 'jobtitle', type: 'string' },
+ { name: 'hs_analytics_last_referrer', type: 'string' },
+ { name: 'message', type: 'string' },
+ { name: 'closedate', type: 'datetime' },
+ { name: 'hs_analytics_average_page_views', type: 'number' },
+ { name: 'hs_analytics_revenue', type: 'number' },
+ { name: 'hs_lifecyclestage_lead_date', type: 'datetime' },
+ {
+ name: 'hs_lifecyclestage_marketingqualifiedlead_date',
+ type: 'datetime',
+ },
+ { name: 'hs_lifecyclestage_opportunity_date', type: 'datetime' },
+ { name: 'lifecyclestage', type: 'enumeration' },
+ { name: 'hs_lifecyclestage_salesqualifiedlead_date', type: 'datetime' },
+ { name: 'createdate', type: 'datetime' },
+ { name: 'hs_lifecyclestage_evangelist_date', type: 'datetime' },
+ { name: 'hs_lifecyclestage_customer_date', type: 'datetime' },
+ { name: 'hubspotscore', type: 'number' },
+ { name: 'company', type: 'string' },
+ { name: 'hs_lifecyclestage_subscriber_date', type: 'datetime' },
+ { name: 'hs_lifecyclestage_other_date', type: 'datetime' },
+ { name: 'website', type: 'string' },
+ { name: 'numemployees', type: 'enumeration' },
+ { name: 'annualrevenue', type: 'string' },
+ { name: 'industry', type: 'string' },
+ { name: 'associatedcompanyid', type: 'number' },
+ { name: 'associatedcompanylastupdated', type: 'number' },
+ { name: 'hs_predictivecontactscorebucket', type: 'enumeration' },
+ { name: 'hs_predictivecontactscore', type: 'number' },
+ ],
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/contacts/search',
+ method: 'POST',
+ headers: {
+ Authorization: 'Bearer dummy-access-token',
+ },
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/contacts/search',
+ method: 'POST',
+ headers: {
+ Authorization: 'Bearer dummy-access-tokensuccess',
+ },
+ },
+ httpRes: {
+ data: {
+ total: 1,
+ results: [
+ {
+ id: '103604',
+ properties: {
+ createdate: '2022-07-15T15:25:08.975Z',
+ email: 'testhubspot@email.com',
+ hs_object_id: '103604',
+ lastmodifieddate: '2022-07-15T15:26:49.590Z',
+ },
+ createdAt: '2022-07-15T15:25:08.975Z',
+ updatedAt: '2022-07-15T15:26:49.590Z',
+ archived: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/contacts/search',
+ method: 'POST',
+ headers: {
+ Authorization: 'Bearer dummy-access-tokenmultiple',
+ },
+ },
+ httpRes: {
+ data: {
+ total: 2,
+ results: [
+ {
+ id: '103604',
+ properties: {
+ createdate: '2022-07-15T15:25:08.975Z',
+ email: 'testhubspot@email.com',
+ hs_object_id: '103604',
+ lastmodifieddate: '2022-07-15T15:26:49.590Z',
+ },
+ createdAt: '2022-07-15T15:25:08.975Z',
+ updatedAt: '2022-07-15T15:26:49.590Z',
+ archived: false,
+ },
+ {
+ id: '103604',
+ properties: {
+ createdate: '2022-07-15T15:25:08.975Z',
+ email: 'testhubspot@email.com',
+ hs_object_id: '103604',
+ lastmodifieddate: '2022-07-15T15:26:49.590Z',
+ },
+ createdAt: '2022-07-15T15:25:08.975Z',
+ updatedAt: '2022-07-15T15:26:49.590Z',
+ archived: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/lead/search',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ total: 1,
+ results: [
+ {
+ id: '103605',
+ properties: {
+ createdate: '2022-08-15T15:25:08.975Z',
+ email: 'testhubspot2@email.com',
+ hs_object_id: '103605',
+ lastmodifieddate: '2022-08-15T15:26:49.590Z',
+ },
+ createdAt: '2022-08-15T15:25:08.975Z',
+ updatedAt: '2022-08-15T15:26:49.590Z',
+ archived: false,
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/lead/search?hapikey=dummy-apikey',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ total: 1,
+ results: [
+ {
+ id: '103605',
+ properties: {
+ createdate: '2022-08-15T15:25:08.975Z',
+ email: 'testhubspot2@email.com',
+ hs_object_id: '103605',
+ lastmodifieddate: '2022-08-15T15:26:49.590Z',
+ },
+ createdAt: '2022-08-15T15:25:08.975Z',
+ updatedAt: '2022-08-15T15:26:49.590Z',
+ archived: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/lead/search?hapikey=rate-limit-id',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ status: 'error',
+ message: 'Request Rate Limit reached',
+ correlationId: '4d39ff11-e121-4514-bcd8-132a9dd1ff50',
+ category: 'RATE-LIMIT_REACHED',
+ links: {
+ 'api key': 'https://app.hubspot.com/l/api-key/',
+ },
+ },
+ status: 429,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/contacts/search?hapikey=dummy-apikey',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ total: 1,
+ results: [
+ {
+ id: '103604',
+ properties: {
+ createdate: '2022-07-15T15:25:08.975Z',
+ email: 'testhubspot@email.com',
+ hs_object_id: '103604',
+ lastmodifieddate: '2022-07-15T15:26:49.590Z',
+ },
+ createdAt: '2022-07-15T15:25:08.975Z',
+ updatedAt: '2022-07-15T15:26:49.590Z',
+ archived: false,
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/contacts/search?hapikey=dummy-apikeysuccess',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/properties/v1/contacts/properties?hapikey=dummy-apikeysuccess',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/properties/v1/contacts/properties?hapikey=rate-limit-id',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ status: 'error',
+ message: 'Request Rate Limit reached',
+ correlationId: '4d39ff11-e121-4514-bcd8-132a9dd1ff50',
+ category: 'RATE-LIMIT_REACHED',
+ links: {
+ 'api key': 'https://app.hubspot.com/l/api-key/',
+ },
+ },
+ status: 429,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/properties/v1/contacts/properties?hapikey=invalid-api-key',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ status: 'error',
+ message:
+ 'The API key provided is invalid. View or manage your API key here: https://app.hubspot.com/l/api-key/',
+ correlationId: '4d39ff11-e121-4514-bcd8-132a9dd1ff50',
+ category: 'INVALID_AUTHENTICATION',
+ links: {
+ 'api key': 'https://app.hubspot.com/l/api-key/',
+ },
+ },
+ status: 401,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.hubapi.com/crm/v3/objects/association/search',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/hs/processor/data.ts b/test/integrations/destinations/hs/processor/data.ts
new file mode 100644
index 00000000000..f45f3a719bf
--- /dev/null
+++ b/test/integrations/destinations/hs/processor/data.ts
@@ -0,0 +1,5376 @@
+import { Destination } from '../../../../../src/types';
+import { generateMetadata, generateSimplifiedIdentifyPayload } from '../../../testUtils';
+
+const commonOutputHeaders = {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+};
+
+const destination: Destination = {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ ID: '123',
+ Name: 'hs',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'hs',
+ DisplayName: 'Hubspot',
+ Config: {},
+ },
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+export const data = [
+ {
+ name: 'hs',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ body: {
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'page',
+ messageId: 'e8585d9a-7137-4223-b295-68ab1b17dad7',
+ originalTimestamp: '2019-10-15T09:35:31.289Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message type page is not supported',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ body: {
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Identify without email is not supported.',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ revenue: 4.99,
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ _m: 4.99,
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ value: 4.99,
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ _m: 4.99,
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'invalid-api-key',
+ hubID: 'dummy-hubId',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 2,
+ },
+ error:
+ '{"message":"Failed to get hubspot properties: {\\"status\\":\\"error\\",\\"message\\":\\"The API key provided is invalid. View or manage your API key here: https://app.hubspot.com/l/api-key/\\",\\"correlationId\\":\\"4d39ff11-e121-4514-bcd8-132a9dd1ff50\\",\\"category\\":\\"INVALID_AUTHENTICATION\\",\\"links\\":{\\"api key\\":\\"https://app.hubspot.com/l/api-key/\\"}}","destinationResponse":{"response":{"status":"error","message":"The API key provided is invalid. View or manage your API key here: https://app.hubspot.com/l/api-key/","correlationId":"4d39ff11-e121-4514-bcd8-132a9dd1ff50","category":"INVALID_AUTHENTICATION","links":{"api key":"https://app.hubspot.com/l/api-key/"}},"status":401}}',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 401,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'rate-limit-id',
+ hubID: 'dummy-hubId',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 2,
+ },
+ error:
+ '{"message":"Failed to get hubspot properties: {\\"status\\":\\"error\\",\\"message\\":\\"Request Rate Limit reached\\",\\"correlationId\\":\\"4d39ff11-e121-4514-bcd8-132a9dd1ff50\\",\\"category\\":\\"RATE-LIMIT_REACHED\\",\\"links\\":{\\"api key\\":\\"https://app.hubspot.com/l/api-key/\\"}}","destinationResponse":{"response":{"status":"error","message":"Request Rate Limit reached","correlationId":"4d39ff11-e121-4514-bcd8-132a9dd1ff50","category":"RATE-LIMIT_REACHED","links":{"api key":"https://app.hubspot.com/l/api-key/"}},"status":429}}',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'network',
+ errorType: 'throttled',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 429,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (legacyApiKey): trigger update all objects endpoint for rETL source',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (legacyApiKey): trigger update all objects endpoint for rETL source',
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspot2@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'PATCH',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/103605',
+ source: 'rETL',
+ operation: 'updateObject',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ body: {
+ JSON: {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot2@email.com',
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (legacyApiKey): trigger create custom objects endpoint',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (legacyApiKey): trigger create custom objects endpoint',
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspot@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead',
+ source: 'rETL',
+ operation: 'createObject',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ body: {
+ JSON: {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot@email.com',
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (newApiKey): trigger create all objects endpoint for rETL source',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (newApiKey): trigger create all objects endpoint for rETL source',
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspot@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ userId: '',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead',
+ source: 'rETL',
+ operation: 'createObject',
+ headers: {
+ Authorization: 'Bearer dummy-access-token',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot@email.com',
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (newApiKey): trigger update all objects endpoint for rETL source',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (newApiKey): trigger update all objects endpoint for rETL source',
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspot2@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'PATCH',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/103605',
+ source: 'rETL',
+ operation: 'updateObject',
+ headers: {
+ Authorization: 'Bearer dummy-access-token',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot2@email.com',
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {},
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ properties: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description: '[HS] (legacyApi): use (API Key) - check external id i.e hubspotId',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'hubspotId',
+ id: '6556',
+ },
+ ],
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS 2',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS 2',
+ id: '6556',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description: '[HS] (legacyApi): use (API Key) - check HS common config mappings',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'hubspotId',
+ id: '6556',
+ },
+ ],
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS 2',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ address: {
+ street: '24. park',
+ },
+ company: {
+ name: 'RudderStack',
+ },
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS 2',
+ id: '6556',
+ address: '24. park',
+ company: 'RudderStack',
+ },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description: '[HS] (legacyApi): use (newPrivateAppApi) for contact endpoint',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'legacyApi',
+ lookupField: '',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description:
+ '[HS] (newApi): get contact from hs with email (lookupField) exactly matching with one contact',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ lookupField: 'email',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-tokensuccess',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts/103604',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-tokensuccess',
+ },
+ params: {},
+ operation: 'updateContacts',
+ body: {
+ JSON: {
+ properties: {
+ email: 'testhubspot@email.com',
+ firstname: 'Test Hubspot',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description:
+ '[HS] (newApi): get contact from hs with email (lookupField) having no contacts',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ lookupField: 'email',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ operation: 'createContacts',
+ body: {
+ JSON: {
+ properties: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description:
+ '[HS] (newApi): get contact from hs with firstname (lookupField) having more than one result',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'nonamess@email.com',
+ firstname: 'Jhon',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-tokenmultiple',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'firstname',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Unable to get single Hubspot contact. More than one contacts found. Retry with unique lookupPropertyName and lookupValue',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description: '[HS] (newApi): Track - validate properties of custom behavioral events',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Purchase',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ Revenue: 100,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '1',
+ apiKey: '1',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ messageType: 'track',
+ endpoint: 'https://api.hubapi.com/events/v3/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'testhubspot2@email.com',
+ occurredAt: '2019-10-15T09:35:31.291Z',
+ eventName: 'pe22315509_rs_hub_test',
+ properties: {
+ value: 100,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description:
+ '[HS] (legacyApi): (legacyApiKey) Identify - testing legacy api with new destination config',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'legacyApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ body: {
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 23',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description:
+ '[HS] (legacyApi): (legacyApiKey) Track - testing legacy api with new destination config',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'legacyApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) check for email in traits which is the deafult lookup field',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) check for email in traits which is the deafult lookup field',
+ message: {
+ type: 'identify',
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ mappedToDestination: false,
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Identify:: email i.e a default lookup field for contact lookup not found in traits',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) email is present in traits as a default lookup field',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) email is present in traits as a default lookup field',
+ message: {
+ type: 'identify',
+ traits: {
+ email: 'noname@email.com',
+ },
+ context: {
+ mappedToDestination: false,
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ properties: {
+ email: 'noname@email.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ operation: 'createContacts',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (newPrivateAppApi) - rETL source - minimum config check',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) - rETL source - minimum config check',
+ message: {
+ type: 'identify',
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ properties: {
+ email: 'osvaldocostaferreira98@gmail.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ source: 'rETL',
+ operation: 'createObject',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) rETL - object type is not provided i.e externalId is empty',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) rETL - object type is not provided i.e externalId is empty',
+ message: {
+ type: 'identify',
+ traits: {},
+ context: {
+ mappedToDestination: 'true',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'rETL - external Id not found.',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (newPrivateAppApi) sample track call for property check',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) sample track call for property check',
+ message: {
+ type: 'track',
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ Revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/events/v3/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'osvaldocostaferreira98@gmail.com',
+ eventName: 'pe22315509_rs_hub_test',
+ properties: {
+ value: 'name1',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ messageType: 'track',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (newPrivateAppApi) - check for accesstoken existence',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (newPrivateAppApi) - check for accesstoken existence',
+ message: {
+ type: 'identify',
+ traits: {
+ lookupField: 'firstname',
+ firstname: 'Test',
+ },
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Access Token not found. Aborting',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (legacyApiKey) - check for hubId existence',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (legacyApiKey) - check for hubId existence',
+ message: {
+ type: 'identify',
+ traits: {
+ lookupField: 'firstname',
+ firstname: 'Test',
+ },
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: '',
+ apiKey: '',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Hub ID not found. Aborting',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (legacyApiKey) - check basic track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (legacyApiKey) - check basic track call',
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Purchase',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ },
+ objectId: '5005',
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/events/v3/send?hapikey=dummy-apikey',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ occurredAt: '2019-10-15T09:35:31.291Z',
+ objectId: '5005',
+ eventName: 'pe22315509_rs_hub_test',
+ properties: {
+ hs_city: 'kolkata',
+ hs_country: 'India',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ messageType: 'track',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (New API v3) - (legacyApiKey) - either of email, utk or objectId must be present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (legacyApiKey) - either of email, utk or objectId must be present',
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Purchase',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ },
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either of email, utk or objectId is required for custom behavioral events',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 33',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ description: '[HS] (newApi): check for legacyApiKey',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikeysuccess',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ params: {
+ hapikey: 'dummy-apikeysuccess',
+ },
+ operation: 'createContacts',
+ body: {
+ JSON: {
+ properties: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (newPrivateAppApi) message type not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (newPrivateAppApi) message type not present',
+ message: {
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Message type is not present. Aborting message.',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (legacyApiKey) - check for api key existence',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (legacyApiKey) - check for api key existence',
+ message: {
+ type: 'identify',
+ traits: {
+ lookupField: 'firstname',
+ firstname: 'Test',
+ },
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: '',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'API Key not found. Aborting',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (newPrivateAppApi) Identify: traits is not supplied',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (newPrivateAppApi) Identify: traits is not supplied',
+ message: {
+ type: 'identify',
+ context: {
+ mappedToDestination: false,
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Identify - Invalid traits value for lookup field',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (legacyApiKey) - event not found',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (legacyApiKey) - event not found',
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'Temp Event',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ },
+ objectId: '5005',
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "Event name 'temp event' mappings are not configured in the destination",
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: '[HS] (New API v3) - (legacyApiKey) - event name is required',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: '[HS] (New API v3) - (legacyApiKey) - event name is required',
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ },
+ objectId: '5005',
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'legacyApiKey',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ accessToken: '',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'event name is required for track call',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (Legacy API v1) - (newPrivateAppApi) rETL - object type is not provided i.e externalId is empty',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (Legacy API v1) - (newPrivateAppApi) rETL - object type is not provided i.e externalId is empty',
+ message: {
+ type: 'identify',
+ traits: {},
+ context: {
+ mappedToDestination: 'true',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'legacyApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pe22315509_rs_hub_test',
+ eventProperties: [
+ {
+ from: 'Revenue',
+ to: 'value',
+ },
+ {
+ from: 'Price',
+ to: 'cost',
+ },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pe22315509_rs_hub_chair',
+ eventProperties: [
+ {
+ from: 'firstName',
+ to: 'first_name',
+ },
+ {
+ from: 'lastName',
+ to: 'last_name',
+ },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'rETL - external Id not found.',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (Legacy API v1) - (newPrivateAppApi) - sample track call for legacy api with newPrivateAppApi',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (Legacy API v1) - (newPrivateAppApi) - sample track call for legacy api with newPrivateAppApi',
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'legacyApi',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ messageType: 'track',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ },
+ body: {
+ JSON: {},
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 41',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspot2@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'rate-limit-id',
+ hubID: 'dummy-hubId',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '{"message":"rETL - Error during searching object record. \\"Request Rate Limit reached\\"","destinationResponse":{"response":{"status":"error","message":"Request Rate Limit reached","correlationId":"4d39ff11-e121-4514-bcd8-132a9dd1ff50","category":"RATE-LIMIT_REACHED","links":{"api key":"https://app.hubspot.com/l/api-key/"}},"status":429}}',
+ metadata: {
+ jobId: 2,
+ },
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'network',
+ errorType: 'throttled',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 429,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 42',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ days_to_close: '29 days to close',
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2023-04-11T09:35:31.288Z',
+ anonymousId: 'ea5cfab2-3961-4d8a-8187-3d1858c99090',
+ userId: 'user@1',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Property days_to_close data type string is not matching with Hubspot property data type number',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 43',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'identify',
+ messageId: 'e8585d9a-7137-4223-b295-68ab1b17dad7',
+ originalTimestamp: '2019-10-15T09:35:31.289Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: {},
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 44',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'identify',
+ messageId: 'e8585d9a-7137-4223-b295-68ab1b17dad7',
+ originalTimestamp: '2019-10-15T09:35:31.289Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test 45',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'identify',
+ messageId: 'e8585d9a-7137-4223-b295-68ab1b17dad7',
+ originalTimestamp: '2019-10-15T09:35:31.289Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ properties: '',
+ integrations: {
+ All: true,
+ },
+ name: 'ApplicationLoaded',
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'dummy-apikey',
+ hubID: 'dummy-hubId',
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ properties: [
+ {
+ property: 'email',
+ value: 'testhubspot2@email.com',
+ },
+ {
+ property: 'firstname',
+ value: 'Test Hubspot',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {
+ hapikey: 'dummy-apikey',
+ },
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) sample track call when hubspotEvents is undefined',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description:
+ '[HS] (New API v3) - (newPrivateAppApi) sample track call when hubspotEvents is undefined',
+ message: {
+ type: 'track',
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: {
+ Revenue: 'name1',
+ },
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ hubID: '',
+ apiKey: '',
+ accessToken: 'dummy-access-token',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ Enabled: true,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event and property mappings are required for track call',
+ statTags: {
+ destType: 'HS',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'Test coversion of null to string values',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedIdentifyPayload({
+ userId: '12345',
+ context: {
+ traits: {
+ email: 'noname@email.com',
+ firstname: null,
+ gender: '',
+ lookupField: 'email',
+ },
+ },
+ }),
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts',
+ files: {},
+ headers: commonOutputHeaders,
+ operation: 'createContacts',
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ properties: {
+ email: 'noname@email.com',
+ firstname: '',
+ gender: '',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ },
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/hs/router/data.ts b/test/integrations/destinations/hs/router/data.ts
new file mode 100644
index 00000000000..3a30232f9fa
--- /dev/null
+++ b/test/integrations/destinations/hs/router/data.ts
@@ -0,0 +1,1691 @@
+export const data = [
+ {
+ name: 'hs',
+ description: 'router associated retl test',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ ID: '123',
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'pat-123',
+ apiVersion: 'newApi',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-08-23T05:59:38.214Z',
+ traits: { to: { id: 1 }, from: { id: 9405415215 } },
+ userId: '1',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '2DkDam0hJ8CXZA43zksWMdPAPRe/Syncher',
+ task_id: 'HUBSPOT_ASSOC_COMPANY_CONTACT',
+ version: 'v1.8.15',
+ batch_id: '8d566f29-5f9b-4fa7-ad0c-d8087ca52d6a',
+ job_run_id: 'cc26p35qhlpr6fd4jrmg',
+ task_run_id: 'cc26p35qhlpr6fd4jrn0',
+ },
+ externalId: [
+ {
+ id: 1,
+ type: 'HS-association',
+ toObjectType: 'contacts',
+ fromObjectType: 'companies',
+ identifierType: 'id',
+ associationTypeId: 'engineer',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '3afcdbfe-b6ec-4bdd-8ba6-28696e3cc163',
+ messageId: 'e0c554aa-0a9a-4e24-9a9a-c951a71a0875',
+ timestamp: '2022-08-23T05:59:33.758Z',
+ receivedAt: '2022-08-23T05:59:33.759Z',
+ request_ip: '10.1.90.32',
+ originalTimestamp: '2022-08-23T05:59:38.214Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ },
+ ],
+ destType: 'hs',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/crm/v3/associations/companies/contacts/batch/create',
+ headers: { 'Content-Type': 'application/json', Authorization: 'Bearer pat-123' },
+ params: {},
+ body: {
+ JSON: { inputs: [{ to: { id: 1 }, from: { id: 9405415215 }, type: 'engineer' }] },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '123',
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'pat-123',
+ apiVersion: 'newApi',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'legacy router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot1@email.com',
+ firstname: 'Test Hubspot1',
+ anonymousId: '1111',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: { email: 'testhubspot2@email.com', firstname: 'Test Hubspot2' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ type: 'track',
+ messageId: '08829772-d991-427c-b976-b4c4f4430b4e',
+ originalTimestamp: '2019-10-15T09:35:31.291Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event HS',
+ properties: {
+ user_actual_role: 'system_admin, system_user',
+ user_actual_id: 12345,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://api.hubapi.com/contacts/v1/contact/createOrUpdate/email/testhubspot2@email.com',
+ headers: { 'Content-Type': 'application/json' },
+ userId: '00000000000000000000000000',
+ params: { hapikey: 'dummy-apikey' },
+ body: {
+ JSON: {
+ properties: [
+ { property: 'email', value: 'testhubspot3@email.com' },
+ { property: 'firstname', value: 'Test Hubspot3' },
+ ],
+ },
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ statusCode: 200,
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot4@email.com',
+ firstname: 'Test Hubspot4',
+ anonymousId: '4444',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'rate-limit-id', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ destType: 'hs',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/contacts/v1/contact/batch/',
+ headers: { 'Content-Type': 'application/json' },
+ params: { hapikey: 'dummy-apikey' },
+ body: {
+ JSON: {},
+ JSON_ARRAY: {
+ batch:
+ '[{"email":"testhubspot3@email.com","properties":[{"property":"firstname","value":"Test Hubspot3"}]},{"email":"testhubspot1@email.com","properties":[{"property":"firstname","value":"Test Hubspot1"}]},{"email":"testhubspot4@email.com","properties":[{"property":"firstname","value":"Test Hubspot4"}]}]',
+ },
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 3, userId: 'u1' },
+ { jobId: 1, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ endpoint: 'https://track.hubspot.com/v1/event',
+ headers: { 'Content-Type': 'application/json' },
+ params: {
+ _a: 'dummy-hubId',
+ _n: 'test track event HS',
+ email: 'testhubspot2@email.com',
+ firstname: 'Test Hubspot2',
+ },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'legacy router retl tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ { identifierType: 'email', id: 'testhubspot2@email.com', type: 'HS-lead' },
+ ],
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ },
+ type: 'identify',
+ traits: { firstname: 'Test Hubspot', anonymousId: '12345', country: 'India' },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ { identifierType: 'email', id: 'testhubspot@email.com', type: 'HS-lead' },
+ ],
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ },
+ type: 'identify',
+ traits: { firstname: 'Test Hubspot 1', anonymousId: '123451', country: 'India 1' },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ },
+ ],
+ destType: 'hs',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/batch/create',
+ headers: { 'Content-Type': 'application/json' },
+ params: { hapikey: 'dummy-apikey' },
+ body: {
+ JSON: {
+ inputs: [
+ {
+ properties: {
+ firstname: 'Test Hubspot 1',
+ anonymousId: '123451',
+ country: 'India 1',
+ email: 'testhubspot@email.com',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/batch/update',
+ headers: { 'Content-Type': 'application/json' },
+ params: { hapikey: 'dummy-apikey' },
+ body: {
+ JSON: {
+ inputs: [
+ {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot2@email.com',
+ },
+ id: '103605',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummy-apikey', hubID: 'dummy-hubId' },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'router retl tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ { identifierType: 'email', id: 'testhubspot2@email.com', type: 'HS-lead' },
+ ],
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ },
+ type: 'identify',
+ traits: { firstname: 'Test Hubspot', anonymousId: '12345', country: 'India' },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ { identifierType: 'email', id: 'testhubspot@email.com', type: 'HS-lead' },
+ ],
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ },
+ type: 'identify',
+ traits: { firstname: 'Test Hubspot 1', anonymousId: '123451', country: 'India 1' },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email',
+ id: 'testhubspotdatetime@email.com',
+ type: 'HS-lead',
+ },
+ ],
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ },
+ type: 'identify',
+ traits: {
+ firstname: 'Test Hubspot',
+ anonymousId: '123451',
+ country: 'India',
+ date_submitted: '2023-09-25T17:31:04.128251Z',
+ date_created: '2023-03-30T01:02:03.05Z',
+ date_closed: '2023-10-18T04:38:59.229347Z',
+ },
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ },
+ ],
+ destType: 'hs',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/batch/create',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ inputs: [
+ {
+ properties: {
+ firstname: 'Test Hubspot 1',
+ anonymousId: '123451',
+ country: 'India 1',
+ email: 'testhubspot@email.com',
+ },
+ },
+ {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '123451',
+ country: 'India',
+ email: 'testhubspotdatetime@email.com',
+ date_closed: 1697587200000,
+ date_created: 1680134400000,
+ date_submitted: 1695600000000,
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 3, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/lead/batch/update',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ inputs: [
+ {
+ properties: {
+ firstname: 'Test Hubspot',
+ anonymousId: '12345',
+ country: 'India',
+ email: 'testhubspot2@email.com',
+ },
+ id: '103605',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'hs',
+ description: 'router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot22',
+ anonymousId: '4444',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'noname@email.com',
+ firstname: 'Test Hubspot44',
+ anonymousId: '4444',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ type: 'track',
+ traits: {},
+ context: {
+ externalId: [
+ {
+ id: 'osvaldocostaferreira98@gmail.com',
+ type: 'HS-contacts',
+ identifierType: 'email',
+ },
+ ],
+ },
+ event: 'Purchase',
+ properties: { Revenue: 'name1' },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'lookupField',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot@email.com',
+ firstname: 'Test Hubspot22',
+ anonymousId: '4444',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'testhubspot@email.com',
+ firstname: 'Test Hubspot44',
+ anonymousId: '4444',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ destType: 'hs',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/crm/v3/objects/contacts/batch/create',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ inputs: [
+ { properties: { email: 'noname@email.com', firstname: 'Test Hubspot44' } },
+ {
+ properties: { email: 'testhubspot@email.com', firstname: 'Test Hubspot44' },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
+ { jobId: 5, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.hubapi.com/events/v3/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummy-access-token',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'osvaldocostaferreira98@gmail.com',
+ eventName: 'pedummy-hubId_rs_hub_test',
+ properties: { value: 'name1' },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ authorizationType: 'newPrivateAppApi',
+ accessToken: 'dummy-access-token',
+ hubID: 'dummy-hubId',
+ apiKey: 'dummy-apikey',
+ apiVersion: 'newApi',
+ lookupField: 'email',
+ hubspotEvents: [
+ {
+ rsEventName: 'Purchase',
+ hubspotEventName: 'pedummy-hubId_rs_hub_test',
+ eventProperties: [
+ { from: 'Revenue', to: 'value' },
+ { from: 'Price', to: 'cost' },
+ ],
+ },
+ {
+ rsEventName: 'Order Complete',
+ hubspotEventName: 'pedummy-hubId_rs_hub_chair',
+ eventProperties: [
+ { from: 'firstName', to: 'first_name' },
+ { from: 'lastName', to: 'last_name' },
+ ],
+ },
+ ],
+ eventFilteringOption: 'disable',
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Hubspot',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'HS',
+ displayName: 'Hubspot',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/impact/router/data.ts b/test/integrations/destinations/impact/router/data.ts
index 1e9cd9cc6e5..e9120ae03dd 100644
--- a/test/integrations/destinations/impact/router/data.ts
+++ b/test/integrations/destinations/impact/router/data.ts
@@ -18,18 +18,8 @@ export const data = [
impactAppId: '2323',
eventTypeId: '56446',
enableEmailHashing: true,
- rudderToImpactProperty: [
- {
- from: 'profit',
- to: 'Money1',
- },
- ],
- productsMapping: [
- {
- from: 'sku',
- to: 'ItemSku',
- },
- ],
+ rudderToImpactProperty: [{ from: 'profit', to: 'Money1' }],
+ productsMapping: [{ from: 'sku', to: 'ItemSku' }],
enableIdentifyEvents: true,
enablePageEvents: false,
enableScreenEvents: false,
@@ -37,40 +27,24 @@ export const data = [
installEventNames: [{ eventName: 'App Installed' }],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
type: 'identify',
sentAt: '2021-01-03T17:02:53.195Z',
userId: 'user123',
channel: 'web',
context: {
- os: {
- name: 'android',
- version: '1.12.3',
- },
+ os: { name: 'android', version: '1.12.3' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
version: '1.1.11',
namespace: 'com.rudderlabs.javascript',
},
- traits: {
- email: 'user123@email.com',
- phone: '+917836362334',
- userId: 'user123',
- },
+ traits: { email: 'user123@email.com', phone: '+917836362334', userId: 'user123' },
locale: 'en-US',
- device: {
- token: 'token',
- id: 'id',
- type: 'ios',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ device: { token: 'token', id: 'id', type: 'ios' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
},
@@ -103,10 +77,7 @@ export const data = [
],
},
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -114,13 +85,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -130,9 +96,7 @@ export const data = [
anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
originalTimestamp: 'NOW',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
accountSID: 'dfsgertrtff3erfc34rfwf',
@@ -141,18 +105,8 @@ export const data = [
impactAppId: '2323',
eventTypeId: '56446',
enableEmailHashing: true,
- rudderToImpactProperty: [
- {
- from: 'properties.profit',
- to: 'Money1',
- },
- ],
- productsMapping: [
- {
- from: 'variant',
- to: 'ItemCategory',
- },
- ],
+ rudderToImpactProperty: [{ from: 'properties.profit', to: 'Money1' }],
+ productsMapping: [{ from: 'variant', to: 'ItemCategory' }],
enableIdentifyEvents: false,
enablePageEvents: false,
enableScreenEvents: false,
@@ -208,11 +162,7 @@ export const data = [
version: '1',
endpoint: 'https://trkapi.impact.com/PageLoad',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -223,18 +173,8 @@ export const data = [
impactAppId: '2323',
eventTypeId: '56446',
enableEmailHashing: true,
- rudderToImpactProperty: [
- {
- from: 'profit',
- to: 'Money1',
- },
- ],
- productsMapping: [
- {
- from: 'sku',
- to: 'ItemSku',
- },
- ],
+ rudderToImpactProperty: [{ from: 'profit', to: 'Money1' }],
+ productsMapping: [{ from: 'sku', to: 'ItemSku' }],
enableIdentifyEvents: true,
enablePageEvents: false,
enableScreenEvents: false,
@@ -287,11 +227,7 @@ export const data = [
endpoint: 'https://api.impact.com/Advertisers/dfsgertrtff3erfc34rfwf/Conversions',
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -302,18 +238,8 @@ export const data = [
impactAppId: '2323',
eventTypeId: '56446',
enableEmailHashing: true,
- rudderToImpactProperty: [
- {
- from: 'properties.profit',
- to: 'Money1',
- },
- ],
- productsMapping: [
- {
- from: 'variant',
- to: 'ItemCategory',
- },
- ],
+ rudderToImpactProperty: [{ from: 'properties.profit', to: 'Money1' }],
+ productsMapping: [{ from: 'variant', to: 'ItemCategory' }],
enableIdentifyEvents: false,
enablePageEvents: false,
enableScreenEvents: false,
diff --git a/test/integrations/destinations/indicative/router/data.ts b/test/integrations/destinations/indicative/router/data.ts
index 037d5d5c3dd..88e0665e62b 100644
--- a/test/integrations/destinations/indicative/router/data.ts
+++ b/test/integrations/destinations/indicative/router/data.ts
@@ -10,14 +10,8 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- apiKey: 'abcde',
- },
- },
- metadata: {
- jobId: 2,
- },
+ destination: { Config: { apiKey: 'abcde' } },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
context: {
@@ -27,25 +21,15 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- AM: true,
- },
+ integrations: { AM: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
additional_bet_index: 0,
@@ -90,14 +74,8 @@ export const data = [
},
},
{
- destination: {
- Config: {
- apiKey: 'abcde',
- },
- },
- metadata: {
- jobId: 2,
- },
+ destination: { Config: { apiKey: 'abcde' } },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
channel: 'web',
context: {
@@ -107,21 +85,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -140,9 +110,7 @@ export const data = [
street: '',
},
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
},
@@ -220,18 +188,10 @@ export const data = [
userId: 'test_user_id',
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'abcde',
- },
- },
+ destination: { Config: { apiKey: 'abcde' } },
},
{
batchedRequest: [
@@ -280,11 +240,7 @@ export const data = [
},
params: {},
body: {
- JSON: {
- previousId: 'anon_id',
- newId: '123456',
- apiKey: 'abcde',
- },
+ JSON: { previousId: 'anon_id', newId: '123456', apiKey: 'abcde' },
XML: {},
JSON_ARRAY: {},
FORM: {},
@@ -293,18 +249,10 @@ export const data = [
userId: '123456',
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'abcde',
- },
- },
+ destination: { Config: { apiKey: 'abcde' } },
},
],
},
diff --git a/test/integrations/destinations/intercom/dataDelivery/data.ts b/test/integrations/destinations/intercom/dataDelivery/data.ts
index 23bcdc6af24..db7aafc963e 100644
--- a/test/integrations/destinations/intercom/dataDelivery/data.ts
+++ b/test/integrations/destinations/intercom/dataDelivery/data.ts
@@ -1,90 +1,91 @@
export const data = [
{
- "name": "intercom",
- "description": "Test 0",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.intercom.io/users/test1",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer intercomApiKey",
- "Accept": "application/json",
- "Intercom-Version": "1.4"
+ name: 'intercom',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users/test1',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
},
- "params": {},
- "body": {
- "JSON": {
- "email": "test_1@test.com",
- "phone": "9876543210",
- "name": "Test Name",
- "signed_up_at": 1601493060,
- "last_seen_user_agent": "unknown",
- "update_last_request_at": true,
- "user_id": "test_user_id_1",
- "custom_attributes": {
- "anonymousId": "58b21c2d-f8d5-4410-a2d0-b268a26b7e33",
- "key1": "value1",
- "address.city": "Kolkata",
- "address.state": "West Bengal",
- "originalArray[0].nested_field": "nested value",
- "originalArray[0].tags[0]": "tag_1",
- "originalArray[0].tags[1]": "tag_2",
- "originalArray[0].tags[2]": "tag_3",
- "originalArray[1].nested_field": "nested value",
- "originalArray[1].tags[0]": "tag_1",
- "originalArray[2].nested_field": "nested value"
- }
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ update_last_request_at: true,
+ user_id: 'test_user_id_1',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ 'address.city': 'Kolkata',
+ 'address.state': 'West Bengal',
+ 'originalArray[0].nested_field': 'nested value',
+ 'originalArray[0].tags[0]': 'tag_1',
+ 'originalArray[0].tags[1]': 'tag_2',
+ 'originalArray[0].tags[2]': 'tag_3',
+ 'originalArray[1].nested_field': 'nested value',
+ 'originalArray[1].tags[0]': 'tag_1',
+ 'originalArray[2].nested_field': 'nested value',
+ },
},
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
},
- "files": {},
- "userId": "58b21c2d-f8d5-4410-a2d0-b268a26b7e33"
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 500,
- "body": {
- "output": {
- "status": 500,
- "message": "[Intercom Response Handler] Request failed for destination intercom with status: 408",
- "destinationResponse": {
- "response": {
- "type": "error.list",
- "request_id": "000on04msi4jpk7d3u60",
- "errors": [
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ '[Intercom Response Handler] Request failed for destination intercom with status: 408',
+ destinationResponse: {
+ response: {
+ type: 'error.list',
+ request_id: '000on04msi4jpk7d3u60',
+ errors: [
{
- "code": "Request Timeout",
- "message": "The server would not wait any longer for the client"
- }
- ]
+ code: 'Request Timeout',
+ message: 'The server would not wait any longer for the client',
+ },
+ ],
},
- "status": 408
+ status: 408,
+ },
+ statTags: {
+ destType: 'INTERCOM',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'retryable',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
- "statTags": {
- "destType": "INTERCOM",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
- }
-]
\ No newline at end of file
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/intercom/deleteUsers/data.ts b/test/integrations/destinations/intercom/deleteUsers/data.ts
index a45af0a98f4..58285ee683e 100644
--- a/test/integrations/destinations/intercom/deleteUsers/data.ts
+++ b/test/integrations/destinations/intercom/deleteUsers/data.ts
@@ -19,7 +19,7 @@ export const data = [
},
],
config: {
- apiKey: 'API_KEY',
+ apiKey: 'testApiKey',
},
},
],
@@ -57,7 +57,7 @@ export const data = [
},
],
config: {
- apiKey: 'API_KEY',
+ apiKey: 'testApiKey',
},
},
],
@@ -140,7 +140,7 @@ export const data = [
body: [
{
statusCode: 400,
- error: 'api key for deletion not present',
+ error: 'The access token is not available',
},
],
},
diff --git a/test/integrations/destinations/intercom/network.ts b/test/integrations/destinations/intercom/network.ts
index e3bba3f2601..74c861259f0 100644
--- a/test/integrations/destinations/intercom/network.ts
+++ b/test/integrations/destinations/intercom/network.ts
@@ -8,7 +8,7 @@ const deleteNwData = [
},
headers: {
Accept: 'application/json',
- Authorization: 'Bearer API_KEY',
+ Authorization: 'Bearer testApiKey',
'Content-Type': 'application/json',
},
},
@@ -35,7 +35,7 @@ const deleteNwData = [
},
headers: {
Accept: 'application/json',
- Authorization: 'Bearer API_KEY',
+ Authorization: 'Bearer testApiKey',
'Content-Type': 'application/json',
},
},
@@ -56,7 +56,7 @@ const deleteNwData = [
},
headers: {
Accept: 'application/json',
- Authorization: 'Bearer API_KEY',
+ Authorization: 'Bearer testApiKey',
'Content-Type': 'application/json',
},
},
@@ -77,7 +77,7 @@ const deleteNwData = [
},
headers: {
Accept: 'application/json',
- Authorization: 'Bearer API_KEY',
+ Authorization: 'Bearer testApiKey',
'Content-Type': 'application/json',
},
},
@@ -89,6 +89,291 @@ const deleteNwData = [
},
},
},
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'email', operator: '=', value: 'test@rudderlabs.com' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'ok',
+ data: {
+ type: 'list',
+ total_count: 0,
+ pages: {
+ type: 'pages',
+ page: 1,
+ per_page: 50,
+ total_pages: 0,
+ },
+ data: [],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'email', operator: '=', value: 'test+2@rudderlabs.com' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'ok',
+ data: {
+ type: 'list',
+ total_count: 1,
+ pages: {
+ type: 'pages',
+ page: 1,
+ per_page: 50,
+ total_pages: 1,
+ },
+ data: [
+ {
+ type: 'contact',
+ id: '7070129940741e45d040',
+ workspace_id: 'rudderWorkspace',
+ external_id: 'user@2',
+ role: 'user',
+ email: 'test+2@rudderlabs.com',
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.eu.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'email', operator: '=', value: 'test+5@rudderlabs.com' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'ok',
+ data: {
+ type: 'list',
+ total_count: 1,
+ pages: {
+ type: 'pages',
+ page: 1,
+ per_page: 50,
+ total_pages: 1,
+ },
+ data: [
+ {
+ type: 'contact',
+ id: '70701240741e45d040',
+ workspace_id: 'rudderWorkspace',
+ external_id: 'user@5',
+ role: 'user',
+ email: 'test+5@rudderlabs.com',
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'phone', operator: '=', value: '+91 9299999999' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'ok',
+ data: {
+ type: 'list',
+ total_count: 1,
+ pages: {
+ type: 'pages',
+ page: 1,
+ per_page: 50,
+ total_pages: 1,
+ },
+ data: [
+ {
+ type: 'contact',
+ id: '7070129940741e45d040',
+ workspace_id: 'rudderWorkspace',
+ external_id: 'user@2',
+ role: 'user',
+ email: 'test+2@rudderlabs.com',
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'email', operator: '=', value: 'test+4@rudderlabs.com' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'ok',
+ data: {
+ type: 'list',
+ total_count: 0,
+ pages: {
+ type: 'pages',
+ page: 1,
+ per_page: 50,
+ total_pages: 0,
+ },
+ data: [],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.intercom.io/contacts/search',
+ data: {
+ query: {
+ operator: 'AND',
+ value: [{ field: 'email', operator: '=', value: 'test+3@rudderlabs.com' }],
+ },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer invalidApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 401,
+ data: {
+ type: 'error.list',
+ request_id: 'request_1',
+ errors: [
+ {
+ code: 'unauthorized',
+ message: 'Access Token Invalid',
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.eu.intercom.io/companies',
+ data: {
+ company_id: 'rudderlabs',
+ name: 'RudderStack',
+ website: 'www.rudderstack.com',
+ plan: 'enterprise',
+ size: 500,
+ industry: 'CDP',
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ type: 'company',
+ company_id: 'rudderlabs',
+ id: '657264e9018c0a647s45',
+ name: 'RudderStack',
+ website: 'www.rudderstack.com',
+ plan: 'enterprise',
+ size: 500,
+ industry: 'CDP',
+ remote_created_at: 1374138000,
+ created_at: 1701930212,
+ updated_at: 1701930212,
+ },
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.eu.intercom.io/companies',
+ data: {
+ company_id: 'rudderlabs',
+ name: 'RudderStack',
+ website: 'www.rudderstack.com',
+ plan: 'enterprise',
+ size: 500,
+ industry: 'CDP',
+ custom_attributes: { isOpenSource: true },
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 401,
+ data: {
+ type: 'error.list',
+ request_id: 'request_1',
+ errors: [
+ {
+ code: 'parameter_invalid',
+ message: "Custom attribute 'isOpenSource' does not exist",
+ },
+ ],
+ },
+ },
+ },
];
const deliveryCallsData = [
{
@@ -142,4 +427,3 @@ const deliveryCallsData = [
},
];
export const networkCallsData = [...deleteNwData, ...deliveryCallsData];
-
diff --git a/test/integrations/destinations/intercom/processor/data.ts b/test/integrations/destinations/intercom/processor/data.ts
new file mode 100644
index 00000000000..2c562ed4e99
--- /dev/null
+++ b/test/integrations/destinations/intercom/processor/data.ts
@@ -0,0 +1,4149 @@
+export const data = [
+ {
+ name: 'intercom',
+ description: 'No message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ age: 23,
+ email: 'adc@test.com',
+ firstname: 'Test',
+ birthday: '2022-05-13T12:51:01.470Z',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ event: 'Product Searched',
+ originalTimestamp: '2020-09-22T14:42:44.724Z',
+ timestamp: '2022-09-22T20:12:44.757+05:30',
+ userId: 'user@1',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 400,
+ error:
+ 'message Type is not present. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message Type is not present. Aborting',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Unsupported message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ traits: {
+ age: 23,
+ email: 'adc@test.com',
+ firstname: 'Test',
+ birthday: '2022-05-13T12:51:01.470Z',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ event: 'Product Searched',
+ type: 'page',
+ originalTimestamp: '2020-09-22T14:42:44.724Z',
+ timestamp: '2022-09-22T20:12:44.757+05:30',
+ userId: 'user@1',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 2,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 2,
+ },
+ statusCode: 400,
+ error:
+ 'message type page is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type page is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Missing required config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 23,
+ email: 'adc@test.com',
+ firstName: 'Test',
+ },
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 3,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 3,
+ },
+ statusCode: 400,
+ error:
+ 'Access Token is not present. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Access Token is not present. Aborting',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Create customer with email as lookup field',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 23,
+ email: 'test@rudderlabs.com',
+ phone: '+91 9999999999',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ address: 'california usa',
+ ownerId: '13',
+ lastSeenAt: '2023-11-10T14:42:44.724Z',
+ },
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 4,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ email: 'test@rudderlabs.com',
+ external_id: 'user@1',
+ last_seen_at: 1699627364,
+ name: 'Test Rudderlabs',
+ owner_id: 13,
+ phone: '+91 9999999999',
+ custom_attributes: {
+ address: 'california usa',
+ age: 23,
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/contacts',
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ userId: '',
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ files: {},
+ params: {},
+ },
+ metadata: { jobId: 4 },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Update customer with email as lookup field',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@2',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 32,
+ email: 'test+2@rudderlabs.com',
+ phone: '+91 9299999999',
+ firstName: 'Test',
+ lastName: 'RudderStack',
+ ownerId: '14',
+ },
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 5,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ email: 'test+2@rudderlabs.com',
+ external_id: 'user@2',
+ name: 'Test RudderStack',
+ owner_id: 14,
+ phone: '+91 9299999999',
+ custom_attributes: {
+ age: 32,
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/contacts/7070129940741e45d040',
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ userId: '',
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ files: {},
+ params: {},
+ },
+ metadata: { jobId: 5 },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Missing required parameters for an identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon@2',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 32,
+ phone: '+91 9299999999',
+ firstName: 'Test',
+ lastName: 'RudderStack',
+ ownerId: '14',
+ role: 'user',
+ source: 'rudder-sdk',
+ },
+ },
+ integrations: {
+ INTERCOM: {
+ lookup: 'phone',
+ },
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 6,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 6,
+ },
+ statusCode: 400,
+ error:
+ 'Either email or userId is required for Identify call: Workflow: procWorkflow, Step: identifyPayloadForLatestVersion, ChildStep: undefined, OriginalError: Either email or userId is required for Identify call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Unauthorized error while searching contact for an identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@3',
+ channel: 'web',
+ context: {
+ traits: {
+ phone: '+91 9399999999',
+ email: 'test+3@rudderlabs.com',
+ firstName: 'Test',
+ lastName: 'Rudder',
+ ownerId: '15',
+ role: 'admin',
+ source: 'rudder-android-sdk',
+ },
+ },
+ integrations: {
+ INTERCOM: {
+ lookup: 'email',
+ },
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'invalidApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 7,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 7,
+ },
+ statusCode: 401,
+ error:
+ '{"message":"{\\"message\\":\\"Unable to search contact due to : [{\\\\\\"code\\\\\\":\\\\\\"unauthorized\\\\\\",\\\\\\"message\\\\\\":\\\\\\"Access Token Invalid\\\\\\"}]: Workflow: procWorkflow, Step: searchContact, ChildStep: undefined, OriginalError: Unable to search contact due to : [{\\\\\\"code\\\\\\":\\\\\\"unauthorized\\\\\\",\\\\\\"message\\\\\\":\\\\\\"Access Token Invalid\\\\\\"}]\\",\\"destinationResponse\\":{\\"response\\":{\\"type\\":\\"error.list\\",\\"request_id\\":\\"request_1\\",\\"errors\\":[{\\"code\\":\\"unauthorized\\",\\"message\\":\\"Access Token Invalid\\"}]},\\"status\\":401}}","destinationResponse":{"response":{"type":"error.list","request_id":"request_1","errors":[{"code":"unauthorized","message":"Access Token Invalid"}]},"status":401}}',
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Track call without event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@3',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 32,
+ email: 'test+3@rudderlabs.com',
+ phone: '+91 9399999999',
+ firstName: 'Test',
+ lastName: 'RudderStack',
+ ownerId: '15',
+ },
+ },
+ properties: {
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ },
+ type: 'track',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 8,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 8,
+ },
+ statusCode: 400,
+ error:
+ 'Event name is required for track call: Workflow: procWorkflow, Step: trackPayload, ChildStep: undefined, OriginalError: Event name is required for track call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Successful track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@2',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 32,
+ email: 'test+2@rudderlabs.com',
+ phone: '+91 9299999999',
+ firstName: 'Test',
+ lastName: 'RudderStack',
+ ownerId: '14',
+ },
+ },
+ properties: {
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ },
+ event: 'Product Viewed',
+ type: 'track',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 9,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ created_at: 1700628164,
+ email: 'test+2@rudderlabs.com',
+ event_name: 'Product Viewed',
+ metadata: {
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ },
+ user_id: 'user@2',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/events',
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ type: 'REST',
+ userId: '',
+ version: '1',
+ params: {},
+ files: {},
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 9,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Group call without groupId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@4',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+4@rudderlabs.com',
+ phone: '+91 9499999999',
+ firstName: 'John',
+ lastName: 'Doe',
+ ownerId: '16',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 10,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ jobId: 10,
+ },
+ statusCode: 400,
+ error:
+ 'groupId is required for group call: Workflow: procWorkflow, Step: groupPayloadForLatestVersion, ChildStep: validateMessageAndPreparePayload, OriginalError: groupId is required for group call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Successful group call to create or update company',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@4',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+4@rudderlabs.com',
+ phone: '+91 9499999999',
+ firstName: 'John',
+ lastName: 'Doe',
+ ownerId: '16',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 11,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ company_id: 'rudderlabs',
+ industry: 'CDP',
+ name: 'RudderStack',
+ plan: 'enterprise',
+ size: 500,
+ website: 'www.rudderstack.com',
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/companies',
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ type: 'REST',
+ userId: '',
+ version: '1',
+ params: {},
+ files: {},
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 11,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Successful group call to add user to company',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@5',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+5@rudderlabs.com',
+ phone: '+91 9599999999',
+ firstName: 'John',
+ lastName: 'Snow',
+ ownerId: '17',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'eu',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 12,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ id: '657264e9018c0a647s45',
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.eu.intercom.io/contacts/70701240741e45d040/companies',
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ type: 'REST',
+ userId: '',
+ version: '1',
+ params: {},
+ files: {},
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 12,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Identify rEtl test',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ id: 'user@1',
+ type: 'INTERCOM-customer',
+ identifierType: 'user_id',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ traits: {
+ email: 'test@rudderlabs.com',
+ phone: '+91 9999999999',
+ name: 'Test Rudderlabs',
+ owner_id: 13,
+ },
+ type: 'identify',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 13,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ email: 'test@rudderlabs.com',
+ name: 'Test Rudderlabs',
+ phone: '+91 9999999999',
+ owner_id: 13,
+ user_id: 'user@1',
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/contacts',
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ userId: '',
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ files: {},
+ params: {},
+ },
+ metadata: { jobId: 13 },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Track rEtl test',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ context: {
+ mappedToDestination: 'true',
+ },
+ traits: {
+ event_name: 'Product Viewed',
+ user_id: 'user@1',
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ },
+ event: 'Product Viewed',
+ type: 'track',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'standard',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 14,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ JSON: {
+ event_name: 'Product Viewed',
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ user_id: 'user@1',
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/events',
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ userId: '',
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ files: {},
+ params: {},
+ },
+ metadata: { jobId: 14 },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ userId: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ address: {
+ city: 'Kolkata',
+ state: 'West Bengal',
+ },
+ originalArray: [
+ {
+ nested_field: 'nested value',
+ tags: ['tag_1', 'tag_2', 'tag_3'],
+ },
+ {
+ nested_field: 'nested value',
+ tags: ['tag_1'],
+ },
+ {
+ nested_field: 'nested value',
+ },
+ ],
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 15,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ 'address.city': 'Kolkata',
+ 'address.state': 'West Bengal',
+ 'originalArray[0].nested_field': 'nested value',
+ 'originalArray[0].tags[0]': 'tag_1',
+ 'originalArray[0].tags[1]': 'tag_2',
+ 'originalArray[0].tags[2]': 'tag_3',
+ 'originalArray[1].nested_field': 'nested value',
+ 'originalArray[1].tags[0]': 'tag_1',
+ 'originalArray[2].nested_field': 'nested value',
+ },
+ update_last_request_at: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 15,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 16,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Test Name',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 16,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 17,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Name',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 17,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 18,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Name',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 18,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old Version: Identify call without email and userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 19,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Either of `email` or `userId` is required for Identify call: Workflow: procWorkflow, Step: identifyPayloadForOlderVersion, ChildStep: undefined, OriginalError: Either of `email` or `userId` is required for Identify call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ metadata: {
+ jobId: 19,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ company: {
+ name: 'Test Comp',
+ id: 'company_id',
+ industry: 'test industry',
+ key1: 'value1',
+ key2: {
+ a: 'a',
+ },
+ key3: [1, 2, 3],
+ },
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 20,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Name',
+ companies: [
+ {
+ company_id: 'company_id',
+ custom_attributes: {
+ key1: 'value1',
+ key2: '{"a":"a"}',
+ key3: '[1,2,3]',
+ },
+ name: 'Test Comp',
+ industry: 'test industry',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 20,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ company: {
+ name: 'Test Comp',
+ industry: 'test industry',
+ key1: 'value1',
+ key2: null,
+ key3: ['value1', 'value2'],
+ key4: {
+ foo: 'bar',
+ },
+ },
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ updateLastRequestAt: false,
+ },
+ },
+ metadata: {
+ jobId: 21,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: false,
+ name: 'Name',
+ companies: [
+ {
+ company_id: 'c0277b5c814453e5135f515f943d085a',
+ custom_attributes: {
+ key1: 'value1',
+ key3: '["value1","value2"]',
+ key4: '{"foo":"bar"}',
+ },
+ name: 'Test Comp',
+ industry: 'test industry',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 21,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ company: {
+ industry: 'test industry',
+ key1: 'value1',
+ key2: null,
+ },
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 22,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Name',
+ companies: [],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 22,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ userId: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ properties: {
+ property1: 1,
+ property2: 'test',
+ property3: true,
+ property4: '2020-10-05T09:09:03.731Z',
+ property5: {
+ property1: 1,
+ property2: 'test',
+ property3: {
+ subProp1: {
+ a: 'a',
+ b: 'b',
+ },
+ subProp2: ['a', 'b'],
+ },
+ },
+ properties6: null,
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ article: {
+ url: 'https://example.org/ab1de.html',
+ value: 'the dude abides',
+ },
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'track',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 23,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'test_user_id_1',
+ email: 'test_1@test.com',
+ event_name: 'Test Event 2',
+ created: 1601493061,
+ metadata: {
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ article: {
+ url: 'https://example.org/ab1de.html',
+ value: 'the dude abides',
+ },
+ property1: 1,
+ property2: 'test',
+ property3: true,
+ property4: '2020-10-05T09:09:03.731Z',
+ 'property5.property1': 1,
+ 'property5.property2': 'test',
+ 'property5.property3.subProp1.a': 'a',
+ 'property5.property3.subProp1.b': 'b',
+ 'property5.property3.subProp2[0]': 'a',
+ 'property5.property3.subProp2[1]': 'b',
+ properties6: null,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 23,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version - successful track call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'track',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 24,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ event_name: 'Test Event 2',
+ created: 1601493061,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 24,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : Track call without email or userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'track',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 25,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Either email or userId is required for Track call: Workflow: procWorkflow, Step: trackPayload, ChildStep: undefined, OriginalError: Either email or userId is required for Track call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ metadata: {
+ jobId: 25,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ externalId: [
+ {
+ id: '10156',
+ type: 'INTERCOM-customer',
+ identifierType: 'user_id',
+ },
+ ],
+ mappedToDestination: 'true',
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 26,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ update_last_request_at: true,
+ user_id: '10156',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 26,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful identify call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ sendAnonymousId: true,
+ },
+ },
+ metadata: {
+ jobId: 27,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ user_id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ update_last_request_at: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 27,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : Identify call without email or userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'intercomApiKey',
+ apiVersion: 'v1',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 28,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Either of `email` or `userId` is required for Identify call: Workflow: procWorkflow, Step: identifyPayloadForOlderVersion, ChildStep: undefined, OriginalError: Either of `email` or `userId` is required for Identify call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'INTERCOM',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'processor',
+ },
+ metadata: {
+ jobId: 28,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful group call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ groupId: 'test_company_id_wdasda',
+ traits: {
+ employees: 450,
+ plan: 'basic',
+ userId: 'sdfrsdfsdfsf',
+ email: 'test@test.com',
+ name: 'rudderUpdate',
+ size: '50',
+ industry: 'IT',
+ monthlySpend: '2131231',
+ remoteCreatedAt: '1683017572',
+ key1: 'val1',
+ },
+ anonymousId: 'sdfrsdfsdfsf',
+ integrations: {
+ All: true,
+ },
+ type: 'group',
+ userId: 'sdfrsdfsdfsf',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'abcd=',
+ appId: 'asdasdasd',
+ apiVersion: 'v1',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 29,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/companies',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ plan: 'basic',
+ size: 50,
+ industry: 'IT',
+ monthly_spend: 2131231,
+ remote_created_at: 1683017572,
+ custom_attributes: {
+ employees: 450,
+ email: 'test@test.com',
+ key1: 'val1',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'sdfrsdfsdfsf',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 29,
+ },
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'sdfrsdfsdfsf',
+ companies: [
+ {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'sdfrsdfsdfsf',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 29,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful group call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ groupId: 'test_company_id',
+ traits: {
+ plan: 'basic',
+ name: 'rudderUpdate',
+ size: 50,
+ industry: 'IT',
+ monthlySpend: '2131231',
+ email: 'comanyemail@abc.com',
+ },
+ anonymousId: '12312312',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent: 'unknown',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ type: 'group',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'abcd=',
+ apiVersion: 'v1',
+ appId: 'asdasdasd',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 30,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/companies',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ company_id: 'test_company_id',
+ name: 'rudderUpdate',
+ plan: 'basic',
+ size: 50,
+ industry: 'IT',
+ monthly_spend: 2131231,
+ custom_attributes: {
+ email: 'comanyemail@abc.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '12312312',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 30,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful group call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ groupId: 'test_company_id_wdasda',
+ context: {
+ traits: {
+ email: 'testUser@test.com',
+ },
+ },
+ traits: {
+ employees: 450,
+ plan: 'basic',
+ email: 'test@test.com',
+ name: 'rudderUpdate',
+ size: '50',
+ industry: 'IT',
+ website: 'url',
+ monthlySpend: '2131231',
+ remoteCreatedAt: '1683017572',
+ key1: 'val1',
+ },
+ anonymousId: 'sdfrsdfsdfsf',
+ integrations: {
+ All: true,
+ },
+ type: 'group',
+ userId: 'sdfrsdfsdfsf',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'abcd=',
+ apiVersion: 'v1',
+ appId: 'asdasdasd',
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 31,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/companies',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ plan: 'basic',
+ size: 50,
+ website: 'url',
+ industry: 'IT',
+ monthly_spend: 2131231,
+ remote_created_at: 1683017572,
+ custom_attributes: {
+ employees: 450,
+ email: 'test@test.com',
+ key1: 'val1',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'sdfrsdfsdfsf',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 31,
+ },
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'sdfrsdfsdfsf',
+ email: 'testUser@test.com',
+ companies: [
+ {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'sdfrsdfsdfsf',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 31,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Old version : successful group call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ groupId: 'test_company_id_wdasda',
+ context: {
+ traits: {
+ email: 'testUser@test.com',
+ },
+ },
+ traits: {
+ employees: 450,
+ plan: 'basic',
+ email: 'test@test.com',
+ name: 'rudderUpdate',
+ size: '50',
+ industry: 'IT',
+ website: 'url',
+ monthlySpend: '2131231',
+ remoteCreatedAt: '1683017572',
+ key1: 'val1',
+ key2: {
+ a: 'a',
+ b: 'b',
+ },
+ key3: [1, 2, 3],
+ key4: null,
+ },
+ anonymousId: 'anonId',
+ integrations: {
+ All: true,
+ },
+ type: 'group',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'abcd=',
+ appId: 'asdasdasd',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: true,
+ },
+ },
+ metadata: {
+ jobId: 32,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/companies',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ plan: 'basic',
+ size: 50,
+ website: 'url',
+ industry: 'IT',
+ monthly_spend: 2131231,
+ remote_created_at: 1683017572,
+ custom_attributes: {
+ employees: 450,
+ email: 'test@test.com',
+ key1: 'val1',
+ 'key2.a': 'a',
+ 'key2.b': 'b',
+ 'key3[0]': 1,
+ 'key3[1]': 2,
+ 'key3[2]': 3,
+ key4: null,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anonId',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 32,
+ },
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcd=',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'anonId',
+ email: 'testUser@test.com',
+ companies: [
+ {
+ company_id: 'test_company_id_wdasda',
+ name: 'rudderUpdate',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'anonId',
+ },
+ statusCode: 200,
+ metadata: {
+ jobId: 32,
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ userId: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ address: {
+ city: 'Kolkata',
+ state: 'West Bengal',
+ },
+ originalArray: [
+ {
+ nested_field: 'nested value',
+ tags: ['tag_1', 'tag_2', 'tag_3'],
+ },
+ {
+ nested_field: 'nested value',
+ tags: ['tag_1'],
+ },
+ {
+ nested_field: 'nested value',
+ },
+ ],
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ Config: {
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ user_id: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ 'address.city': 'Kolkata',
+ 'address.state': 'West Bengal',
+ 'originalArray[0].nested_field': 'nested value',
+ 'originalArray[0].tags[0]': 'tag_1',
+ 'originalArray[0].tags[1]': 'tag_2',
+ 'originalArray[0].tags[2]': 'tag_3',
+ 'originalArray[1].nested_field': 'nested value',
+ 'originalArray[1].tags[0]': 'tag_1',
+ 'originalArray[2].nested_field': 'nested value',
+ },
+ update_last_request_at: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ Config: {
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Test Name',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ destination: {
+ Config: {
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer intercomApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ update_last_request_at: true,
+ name: 'Name',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/intercom/router/data.ts b/test/integrations/destinations/intercom/router/data.ts
new file mode 100644
index 00000000000..2ce8621ca17
--- /dev/null
+++ b/test/integrations/destinations/intercom/router/data.ts
@@ -0,0 +1,1187 @@
+export const data = [
+ {
+ name: 'intercom',
+ description: 'Intercom router tests',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ userId: 'user@1',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 23,
+ email: 'test@rudderlabs.com',
+ phone: '+91 9999999999',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ address: 'california usa',
+ ownerId: '13',
+ },
+ },
+ type: 'identify',
+ integrations: { All: true },
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'standard',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ updateLastRequestAt: true,
+ },
+ },
+ metadata: { jobId: 1 },
+ },
+ {
+ message: {
+ userId: 'user@3',
+ channel: 'web',
+ context: {
+ traits: {
+ age: 32,
+ email: 'test+3@rudderlabs.com',
+ phone: '+91 9399999999',
+ firstName: 'Test',
+ lastName: 'RudderStack',
+ ownerId: '15',
+ },
+ },
+ properties: {
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ },
+ event: 'Product Viewed',
+ type: 'track',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'standard',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ },
+ metadata: {
+ jobId: 2,
+ },
+ },
+ {
+ message: {
+ userId: 'user@5',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+5@rudderlabs.com',
+ phone: '+91 9599999999',
+ firstName: 'John',
+ lastName: 'Snow',
+ ownerId: '17',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'eu',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 3,
+ },
+ },
+ {
+ message: {
+ userId: 'user@6',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+5@rudderlabs.com',
+ phone: '+91 9599999999',
+ firstName: 'John',
+ lastName: 'Snow',
+ ownerId: '17',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ isOpenSource: true,
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v2',
+ apiServer: 'eu',
+ sendAnonymousId: false,
+ },
+ },
+ metadata: {
+ jobId: 4,
+ },
+ },
+ ],
+ destType: 'intercom',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ JSON: {
+ email: 'test@rudderlabs.com',
+ external_id: 'user@1',
+ name: 'Test Rudderlabs',
+ owner_id: 13,
+ phone: '+91 9999999999',
+ custom_attributes: {
+ address: 'california usa',
+ age: 23,
+ },
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.intercom.io/contacts',
+ files: {},
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'standard',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ updateLastRequestAt: true,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: [{ jobId: 1 }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ created_at: 1700628164,
+ email: 'test+3@rudderlabs.com',
+ event_name: 'Product Viewed',
+ metadata: {
+ price: {
+ amount: 3000,
+ currency: 'USD',
+ },
+ revenue: {
+ amount: 1232,
+ currency: 'inr',
+ test: 123,
+ },
+ },
+ user_id: 'user@3',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/events',
+ files: {},
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'standard',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: [{ jobId: 2 }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ JSON: {
+ id: '657264e9018c0a647s45',
+ },
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ },
+ endpoint: 'https://api.eu.intercom.io/contacts/70701240741e45d040/companies',
+ files: {},
+ headers: {
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ 'Intercom-Version': '2.10',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'eu',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: [
+ {
+ jobId: 3,
+ },
+ ],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ error:
+ '{"message":"Unable to Create or Update Company due to : [{\\"code\\":\\"parameter_invalid\\",\\"message\\":\\"Custom attribute \'isOpenSource\' does not exist\\"}]","destinationResponse":{"response":{"type":"error.list","request_id":"request_1","errors":[{"code":"parameter_invalid","message":"Custom attribute \'isOpenSource\' does not exist"}]},"status":401}}',
+ statTags: {
+ destType: 'INTERCOM',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'router',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiServer: 'eu',
+ apiVersion: 'v2',
+ sendAnonymousId: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: [
+ {
+ jobId: 4,
+ },
+ ],
+ statusCode: 401,
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ userId: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ collectContext: false,
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ collectContext: false,
+ },
+ },
+ },
+ {
+ message: {
+ userId: 'user@5',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+5@rudderlabs.com',
+ phone: '+91 9599999999',
+ firstName: 'John',
+ lastName: 'Snow',
+ ownerId: '17',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 3,
+ },
+ },
+ ],
+ destType: 'intercom',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer testApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ update_last_request_at: false,
+ user_id: 'test_user_id_1',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer testApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ name: 'Test Name',
+ last_seen_user_agent: 'unknown',
+ update_last_request_at: false,
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ },
+ },
+ {
+ batched: false,
+ batchedRequest: [
+ {
+ body: {
+ FORM: {},
+ JSON: {
+ company_id: 'rudderlabs',
+ industry: 'CDP',
+ name: 'RudderStack',
+ plan: 'enterprise',
+ size: 500,
+ website: 'www.rudderstack.com',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/companies',
+ files: {},
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ {
+ body: {
+ FORM: {},
+ JSON: {
+ companies: [
+ {
+ company_id: 'rudderlabs',
+ name: 'RudderStack',
+ },
+ ],
+ email: 'test+5@rudderlabs.com',
+ user_id: 'user@5',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/users',
+ files: {},
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ ],
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ },
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ },
+ metadata: [
+ {
+ jobId: 3,
+ },
+ ],
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'intercom',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ name: 'Test Name',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ userId: 'test_user_id_1',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ collectContext: false,
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1.0',
+ name: 'Test_Example',
+ namespace: 'com.example.testapp',
+ version: '1.0',
+ },
+ device: {
+ id: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ manufacturer: 'Apple',
+ model: 'iPhone',
+ name: 'iPod touch (7th generation)',
+ type: 'iOS',
+ },
+ library: {
+ name: 'test-ios-library',
+ version: '1.0.7',
+ },
+ locale: 'en-US',
+ network: {
+ bluetooth: false,
+ carrier: 'unavailable',
+ cellular: false,
+ wifi: true,
+ },
+ os: {
+ name: 'iOS',
+ version: '14.0',
+ },
+ screen: {
+ density: 2,
+ height: 320,
+ width: 568,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ firstName: 'Test',
+ lastName: 'Name',
+ createdAt: '2020-09-30T19:11:00.337Z',
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ key1: 'value1',
+ },
+ userAgent: 'unknown',
+ },
+ event: 'Test Event 2',
+ integrations: {
+ All: true,
+ },
+ messageId: '1601493060-39010c49-e6e4-4626-a75c-0dbf1925c9e8',
+ originalTimestamp: '2020-09-30T19:11:00.337Z',
+ receivedAt: '2020-10-01T00:41:11.369+05:30',
+ request_ip: '2405:201:8005:9856:7911:25e7:5603:5e18',
+ sentAt: '2020-09-30T19:11:10.382Z',
+ timestamp: '2020-10-01T00:41:01.324+05:30',
+ type: 'identify',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ collectContext: false,
+ },
+ },
+ },
+ {
+ message: {
+ userId: 'user@5',
+ groupId: 'rudderlabs',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'test+5@rudderlabs.com',
+ phone: '+91 9599999999',
+ firstName: 'John',
+ lastName: 'Snow',
+ ownerId: '17',
+ },
+ },
+ traits: {
+ name: 'RudderStack',
+ size: 500,
+ website: 'www.rudderstack.com',
+ industry: 'CDP',
+ plan: 'enterprise',
+ },
+ type: 'group',
+ originalTimestamp: '2023-11-10T14:42:44.724Z',
+ timestamp: '2023-11-22T10:12:44.757+05:30',
+ },
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ sendAnonymousId: false,
+ collectContext: false,
+ },
+ },
+ metadata: {
+ jobId: 3,
+ },
+ },
+ ],
+ destType: 'intercom',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer testApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ name: 'Test Name',
+ signed_up_at: 1601493060,
+ last_seen_user_agent: 'unknown',
+ update_last_request_at: false,
+ user_id: 'test_user_id_1',
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.intercom.io/users',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer testApiKey',
+ Accept: 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ params: {},
+ body: {
+ JSON: {
+ email: 'test_1@test.com',
+ phone: '9876543210',
+ signed_up_at: 1601493060,
+ name: 'Test Name',
+ last_seen_user_agent: 'unknown',
+ update_last_request_at: false,
+ custom_attributes: {
+ anonymousId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ key1: 'value1',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '58b21c2d-f8d5-4410-a2d0-b268a26b7e33',
+ },
+ metadata: [
+ {
+ jobId: 2,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ updateLastRequestAt: false,
+ },
+ },
+ },
+ {
+ batched: false,
+ batchedRequest: [
+ {
+ body: {
+ FORM: {},
+ JSON: {
+ company_id: 'rudderlabs',
+ industry: 'CDP',
+ name: 'RudderStack',
+ plan: 'enterprise',
+ size: 500,
+ website: 'www.rudderstack.com',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/companies',
+ files: {},
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ {
+ body: {
+ FORM: {},
+ JSON: {
+ companies: [
+ {
+ company_id: 'rudderlabs',
+ name: 'RudderStack',
+ },
+ ],
+ email: 'test+5@rudderlabs.com',
+ user_id: 'user@5',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.intercom.io/users',
+ files: {},
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Bearer testApiKey',
+ 'Content-Type': 'application/json',
+ 'Intercom-Version': '1.4',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ ],
+ destination: {
+ Config: {
+ apiKey: 'testApiKey',
+ apiVersion: 'v1',
+ collectContext: false,
+ sendAnonymousId: false,
+ },
+ },
+ metadata: [
+ {
+ jobId: 3,
+ },
+ ],
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/iterable/deleteUsers/data.ts b/test/integrations/destinations/iterable/deleteUsers/data.ts
new file mode 100644
index 00000000000..79d801f4eee
--- /dev/null
+++ b/test/integrations/destinations/iterable/deleteUsers/data.ts
@@ -0,0 +1,186 @@
+const destType = 'iterable';
+
+export const data = [
+ {
+ name: destType,
+ description: 'Test 0: should fail when config is not being sent',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ ],
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Config for deletion not present',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Test 1: should fail when apiKey is not present in config',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder2',
+ },
+ ],
+ config: {
+ apiToken: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error: 'api key for deletion not present',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Test 2: should fail when one of the user-deletion requests fails',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder1',
+ },
+ {
+ userId: 'rudder2',
+ },
+ ],
+ config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'User deletion request failed for userIds : [{"userId":"rudder2","Reason":"User does not exist. Email: UserId: rudder2"}]',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Test 3: should fail when invalid api key is set in config',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder3',
+ },
+ {
+ userId: 'rudder4',
+ },
+ ],
+ config: {
+ apiKey: 'invalidKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 401,
+ body: [
+ {
+ error: 'User deletion request failed : Invalid API key',
+ statusCode: 401,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Test 4: should pass when proper apiKey & valid users are sent to destination',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: destType.toUpperCase(),
+ userAttributes: [
+ {
+ userId: 'rudder5',
+ },
+ {
+ userId: 'rudder6',
+ },
+ ],
+ config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ status: 'successful',
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/iterable/network.ts b/test/integrations/destinations/iterable/network.ts
new file mode 100644
index 00000000000..39544b26477
--- /dev/null
+++ b/test/integrations/destinations/iterable/network.ts
@@ -0,0 +1,109 @@
+const deleteNwData = [
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder1',
+ headers: {
+ api_key: 'dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'All users associated with rudder1 were successfully deleted',
+ code: 'Success',
+ params: null,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder2',
+ headers: {
+ api_key: 'dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'User does not exist. Email: UserId: rudder2',
+ code: 'BadParams',
+ params: null,
+ },
+ status: 400,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder3',
+ headers: {
+ api_key: 'invalidKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'Invalid API key',
+ code: 'Success',
+ params: {
+ endpoint: '/api/users/byUserId/rudder3',
+ },
+ },
+ status: 401,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder4',
+ headers: {
+ api_key: 'invalidKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'Invalid API key',
+ code: 'Success',
+ params: {
+ endpoint: '/api/users/byUserId/rudder4',
+ },
+ },
+ status: 401,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder5',
+ headers: {
+ api_key: 'dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'All users associated with rudder6 were successfully deleted',
+ code: 'Success',
+ params: null,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ method: 'delete',
+ url: 'https://api.iterable.com/api/users/byUserId/rudder6',
+ headers: {
+ api_key: 'dummyApiKey',
+ },
+ },
+ httpRes: {
+ data: {
+ msg: 'All users associated with rudder6 were successfully deleted',
+ code: 'Success',
+ params: null,
+ },
+ status: 200,
+ },
+ },
+];
+export const networkCallsData = [...deleteNwData];
diff --git a/test/integrations/destinations/iterable/router/data.ts b/test/integrations/destinations/iterable/router/data.ts
index 7cd19381d61..09eedc8eb85 100644
--- a/test/integrations/destinations/iterable/router/data.ts
+++ b/test/integrations/destinations/iterable/router/data.ts
@@ -15,10 +15,7 @@ export const data = [
sentAt: '2022-09-27T11:13:03.777Z',
messageId: '9ad41366-8060-4c9f-b181-f6bea67d5469',
originalTimestamp: '2022-09-27T11:13:03.777Z',
- traits: {
- ruchira: 'donaldbaker@ellis.com',
- new_field2: 'GB',
- },
+ traits: { ruchira: 'donaldbaker@ellis.com', new_field2: 'GB' },
channel: 'sources',
rudderId: '3d51640c-ab09-42c1-b7b2-db6ab433b35e',
context: {
@@ -32,11 +29,7 @@ export const data = [
},
mappedToDestination: 'true',
externalId: [
- {
- id: 'Tiffany',
- type: 'ITERABLE-test-ruchira',
- identifierType: 'itemId',
- },
+ { id: 'Tiffany', type: 'ITERABLE-test-ruchira', identifierType: 'itemId' },
],
},
timestamp: '2022-09-27T11:12:59.079Z',
@@ -45,14 +38,9 @@ export const data = [
recordId: '10',
request_ip: '10.1.86.248',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
- Config: {
- apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e',
- hubID: '22066036',
- },
+ Config: { apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e', hubID: '22066036' },
Enabled: true,
},
},
@@ -62,10 +50,7 @@ export const data = [
sentAt: '2022-09-27T11:13:03.777Z',
messageId: '9ad41366-8060-4c9f-b181-f6bea67d5469',
originalTimestamp: '2022-09-27T11:13:03.777Z',
- traits: {
- ruchira: 'abc@ellis.com',
- new_field2: 'GB1',
- },
+ traits: { ruchira: 'abc@ellis.com', new_field2: 'GB1' },
channel: 'sources',
rudderId: '3d51640c-ab09-42c1-b7b2-db6ab433b35e',
context: {
@@ -79,11 +64,7 @@ export const data = [
},
mappedToDestination: 'true',
externalId: [
- {
- id: 'ABC',
- type: 'ITERABLE-test-ruchira',
- identifierType: 'itemId',
- },
+ { id: 'ABC', type: 'ITERABLE-test-ruchira', identifierType: 'itemId' },
],
},
timestamp: '2022-09-27T11:12:59.079Z',
@@ -92,14 +73,9 @@ export const data = [
recordId: '10',
request_ip: '10.1.86.248',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
- Config: {
- apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e',
- hubID: '22066036',
- },
+ Config: { apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e', hubID: '22066036' },
Enabled: true,
},
},
@@ -127,14 +103,8 @@ export const data = [
body: {
JSON: {
documents: {
- Tiffany: {
- ruchira: 'donaldbaker@ellis.com',
- new_field2: 'GB',
- },
- ABC: {
- ruchira: 'abc@ellis.com',
- new_field2: 'GB1',
- },
+ Tiffany: { ruchira: 'donaldbaker@ellis.com', new_field2: 'GB' },
+ ABC: { ruchira: 'abc@ellis.com', new_field2: 'GB1' },
},
replaceUploadedFieldsOnly: true,
},
@@ -145,20 +115,13 @@ export const data = [
files: {},
},
metadata: [
- {
- jobId: 2,
- },
- {
- jobId: 2,
- },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
],
batched: true,
statusCode: 200,
destination: {
- Config: {
- apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e',
- hubID: '22066036',
- },
+ Config: { apiKey: '583af2f8-15ba-49c0-8511-76383e7de07e', hubID: '22066036' },
Enabled: true,
},
},
@@ -182,15 +145,8 @@ export const data = [
type: 'track',
event: 'Email Opened',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453',
properties: {
@@ -201,9 +157,7 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
apiKey: '62d12498c37c4fd8a1a546c2d35c2f60',
@@ -233,22 +187,15 @@ export const data = [
email: 'manashi@website.com',
country: 'India',
},
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
+ library: { name: 'analytics-node', version: '0.0.3' },
},
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-cc3ef811f686139ee527b806ee0129ef-163a3a88-266f-447e-8cce-34a8f42f8dcd',
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.462Z',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
apiKey: '62d12498c37c4fd8a1a546c2d35c2f60',
@@ -270,24 +217,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'sayan@gmail.com',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'sayan@gmail.com' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
type: 'page',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -302,15 +239,11 @@ export const data = [
url: '',
category: 'test-category',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
destination: {
Config: {
apiKey: '12345',
@@ -342,9 +275,7 @@ export const data = [
task_run_id: 'c5tar6cqgmgmcjvupdi0',
version: 'release.v1.6.8',
},
- device: {
- token: 54321,
- },
+ device: { token: 54321 },
},
messageId: '2f052f7c-f694-4849-a7ed-a432f7ffa0a4',
originalTimestamp: '2021-10-28T14:03:50.503Z',
@@ -365,9 +296,7 @@ export const data = [
type: 'identify',
userId: 'lynnanderson@smith.net',
},
- metadata: {
- jobId: 5,
- },
+ metadata: { jobId: 5, userId: 'u1' },
destination: {
ID: '1zia9wKshXt80YksLmUdJnr7IHI',
Name: 'test_iterable',
@@ -420,9 +349,7 @@ export const data = [
IsProcessorEnabled: true,
},
libraries: [],
- request: {
- query: {},
- },
+ request: { query: {} },
},
{
message: {
@@ -434,24 +361,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'sayan@gmail.com',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'sayan@gmail.com' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
event: 'product added',
type: 'track',
@@ -489,15 +406,11 @@ export const data = [
},
],
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
- metadata: {
- jobId: 6,
- },
+ metadata: { jobId: 6, userId: 'u1' },
destination: {
Config: {
apiKey: '62d12498c37c4fd8a1a546c2d35c2f60',
@@ -513,15 +426,8 @@ export const data = [
message: {
type: 'page',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-6f62b91e789a636929ca38aed01c5f6e-103c720d-81bd-4742-98d6-d45a65aed23e',
properties: {
@@ -532,9 +438,7 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 7,
- },
+ metadata: { jobId: 7, userId: 'u1' },
destination: {
Config: {
apiKey: '62d12498c37c4fd8a1a546c2d35c2f60',
@@ -550,15 +454,8 @@ export const data = [
message: {
type: 'alias',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-6f62b91e789a636929ca38aed01c5f6e-103c720d-81bd-4742-98d6-d45a65aed23e',
properties: {
@@ -571,9 +468,7 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 8,
- },
+ metadata: { jobId: 8, userId: 'u1' },
destination: {
Config: {
apiKey: '62d12498c37c4fd8a1a546c2d35c2f60',
@@ -627,11 +522,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -679,11 +570,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -703,10 +590,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.iterable.com/api/events/trackBulk',
- headers: {
- 'Content-Type': 'application/json',
- api_key: '12345',
- },
+ headers: { 'Content-Type': 'application/json', api_key: '12345' },
params: {},
body: {
JSON: {
@@ -733,11 +617,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 4,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -766,9 +646,7 @@ export const data = [
JSON: {
user: {
email: 'sayan@gmail.com',
- dataFields: {
- email: 'sayan@gmail.com',
- },
+ dataFields: { email: 'sayan@gmail.com' },
userId: '12345',
preferUserId: true,
mergeNestedObjects: true,
@@ -802,11 +680,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 6,
- },
- ],
+ metadata: [{ jobId: 6, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -852,11 +726,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 7,
- },
- ],
+ metadata: [{ jobId: 7, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -882,21 +752,14 @@ export const data = [
},
params: {},
body: {
- JSON: {
- currentEmail: 'old@email.com',
- newEmail: 'new@email.com',
- },
+ JSON: { currentEmail: 'old@email.com', newEmail: 'new@email.com' },
JSON_ARRAY: {},
XML: {},
FORM: {},
},
files: {},
},
- metadata: [
- {
- jobId: 8,
- },
- ],
+ metadata: [{ jobId: 8, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -916,10 +779,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.iterable.com/api/users/bulkUpdate',
- headers: {
- 'Content-Type': 'application/json',
- api_key: '12345',
- },
+ headers: { 'Content-Type': 'application/json', api_key: '12345' },
params: {},
body: {
JSON: {
@@ -947,11 +807,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 5,
- },
- ],
+ metadata: [{ jobId: 5, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/june/router/data.ts b/test/integrations/destinations/june/router/data.ts
index cf8c4f00110..81e5c6eb5aa 100644
--- a/test/integrations/destinations/june/router/data.ts
+++ b/test/integrations/destinations/june/router/data.ts
@@ -10,49 +10,29 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- apiKey: '93EMyDLvfpbRxxYn',
- },
- ID: 'june123',
- },
- metadata: {
- jobId: 1,
- },
+ destination: { Config: { apiKey: '93EMyDLvfpbRxxYn' }, ID: 'june123' },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
type: 'identify',
sentAt: '2022-01-20T13:39:21.033Z',
channel: 'web',
userId: '5136633649',
- context: {
- traits: {
- name: 'John Doe',
- email: 'johndoe@gmail.com',
- age: 25,
- },
- },
+ context: { traits: { name: 'John Doe', email: 'johndoe@gmail.com', age: 25 } },
rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
originalTimestamp: '2022-01-20T13:39:21.032Z',
},
},
{
- destination: {
- Config: {
- apiKey: '93EMyDLvfpbRxxYn',
- },
- ID: 'june123',
- },
- metadata: {
- jobId: 2,
- },
+ destination: { Config: { apiKey: '93EMyDLvfpbRxxYn' }, ID: 'june123' },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
type: 'track',
event: 'Product Reviewed',
properties: {
review_id: '12345',
product_id: '123',
- rating: 3.0,
+ rating: 3,
review_body: 'Average product, expected much more.',
groupId: '91Yb32830',
},
@@ -80,11 +60,7 @@ export const data = [
JSON: {
anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
timestamp: '2022-01-20T13:39:21.032Z',
- traits: {
- age: 25,
- email: 'johndoe@gmail.com',
- name: 'John Doe',
- },
+ traits: { age: 25, email: 'johndoe@gmail.com', name: 'John Doe' },
userId: '5136633649',
},
JSON_ARRAY: {},
@@ -101,33 +77,15 @@ export const data = [
type: 'REST',
version: '1',
},
- destination: {
- Config: {
- apiKey: '93EMyDLvfpbRxxYn',
- },
- ID: 'june123',
- },
- metadata: [
- {
- jobId: 1,
- },
- ],
+ destination: { Config: { apiKey: '93EMyDLvfpbRxxYn' }, ID: 'june123' },
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
- destination: {
- Config: {
- apiKey: '93EMyDLvfpbRxxYn',
- },
- ID: 'june123',
- },
+ destination: { Config: { apiKey: '93EMyDLvfpbRxxYn' }, ID: 'june123' },
batched: false,
error: 'Missing required value from "userIdOnly"',
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
destType: 'JUNE',
errorCategory: 'dataValidation',
diff --git a/test/integrations/destinations/kafka/batch/data.ts b/test/integrations/destinations/kafka/batch/data.ts
index 0cc1d75c242..131833b23cd 100644
--- a/test/integrations/destinations/kafka/batch/data.ts
+++ b/test/integrations/destinations/kafka/batch/data.ts
@@ -19,12 +19,8 @@ export const data = [
userId: 'user1',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '6f27a4da-cefb-4800-acf1-f467e8aab91c',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -35,10 +31,7 @@ export const data = [
},
topic: 'new-topic',
},
- metadata: {
- rudderId: 'user1<<>>new-topic',
- jobId: 1,
- },
+ metadata: { rudderId: 'user1<<>>new-topic', jobId: 1, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -105,12 +98,8 @@ export const data = [
userId: 'user2',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: 'fe182d9e-e86e-4db5-ae12-f4b399555fcc',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -121,10 +110,7 @@ export const data = [
},
topic: 'new-topic',
},
- metadata: {
- rudderId: 'user2<<>>new-topic',
- jobId: 2,
- },
+ metadata: { rudderId: 'user2<<>>new-topic', jobId: 2, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -191,12 +177,8 @@ export const data = [
userId: 'user3',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '2803e656-77ff-47ca-9606-90663f9aed38',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -207,10 +189,7 @@ export const data = [
},
topic: 'new-topic',
},
- metadata: {
- rudderId: 'user3<<>>new-topic',
- jobId: 3,
- },
+ metadata: { rudderId: 'user3<<>>new-topic', jobId: 3, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -277,12 +256,8 @@ export const data = [
userId: 'user4',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -293,10 +268,7 @@ export const data = [
},
topic: 'new-topic',
},
- metadata: {
- rudderId: 'user4<<>>new-topic',
- jobId: 4,
- },
+ metadata: { rudderId: 'user4<<>>new-topic', jobId: 4, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -363,19 +335,10 @@ export const data = [
userId: 'user5',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- schemaId: 'schema001',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { schemaId: 'schema001' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -386,10 +349,7 @@ export const data = [
schemaId: 'schema001',
topic: 'new-topic',
},
- metadata: {
- rudderId: 'user5<<>>new-topic',
- jobId: 5,
- },
+ metadata: { rudderId: 'user5<<>>new-topic', jobId: 5, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -456,19 +416,10 @@ export const data = [
userId: 'user6',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-1',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-1' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -478,10 +429,7 @@ export const data = [
},
topic: 'topic-1',
},
- metadata: {
- rudderId: 'user6<<>>topic-1',
- jobId: 6,
- },
+ metadata: { rudderId: 'user6<<>>topic-1', jobId: 6, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -548,19 +496,10 @@ export const data = [
userId: 'user7',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-1',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-1' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -570,10 +509,7 @@ export const data = [
},
topic: 'topic-1',
},
- metadata: {
- rudderId: 'user7<<>>topic-1',
- jobId: 7,
- },
+ metadata: { rudderId: 'user7<<>>topic-1', jobId: 7, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -640,19 +576,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-2',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-2' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -662,10 +589,7 @@ export const data = [
},
topic: 'topic-2',
},
- metadata: {
- rudderId: 'user8<<>>topic-2',
- jobId: 8,
- },
+ metadata: { rudderId: 'user8<<>>topic-2', jobId: 8, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -732,19 +656,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-2',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-2' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -754,10 +669,7 @@ export const data = [
},
topic: 'topic-2',
},
- metadata: {
- rudderId: 'user8<<>>topic-2',
- jobId: 9,
- },
+ metadata: { rudderId: 'user8<<>>topic-2', jobId: 9, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -824,19 +736,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-3',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-3' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -846,10 +749,7 @@ export const data = [
},
topic: 'topic-3',
},
- metadata: {
- rudderId: 'user8<<>>topic-3',
- jobId: 10,
- },
+ metadata: { rudderId: 'user8<<>>topic-3', jobId: 10, userId: 'u1' },
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
@@ -927,12 +827,8 @@ export const data = [
userId: 'user1',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '6f27a4da-cefb-4800-acf1-f467e8aab91c',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -951,12 +847,8 @@ export const data = [
userId: 'user2',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: 'fe182d9e-e86e-4db5-ae12-f4b399555fcc',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -975,12 +867,8 @@ export const data = [
userId: 'user3',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '2803e656-77ff-47ca-9606-90663f9aed38',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -999,12 +887,8 @@ export const data = [
userId: 'user4',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -1023,19 +907,10 @@ export const data = [
userId: 'user5',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- schemaId: 'schema001',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { schemaId: 'schema001' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1048,23 +923,11 @@ export const data = [
},
],
metadata: [
- { rudderId: 'user1<<>>new-topic', jobId: 1 },
- {
- rudderId: 'user2<<>>new-topic',
- jobId: 2,
- },
- {
- rudderId: 'user3<<>>new-topic',
- jobId: 3,
- },
- {
- rudderId: 'user4<<>>new-topic',
- jobId: 4,
- },
- {
- rudderId: 'user5<<>>new-topic',
- jobId: 5,
- },
+ { rudderId: 'user1<<>>new-topic', jobId: 1, userId: 'u1' },
+ { rudderId: 'user2<<>>new-topic', jobId: 2, userId: 'u1' },
+ { rudderId: 'user3<<>>new-topic', jobId: 3, userId: 'u1' },
+ { rudderId: 'user4<<>>new-topic', jobId: 4, userId: 'u1' },
+ { rudderId: 'user5<<>>new-topic', jobId: 5, userId: 'u1' },
],
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
@@ -1135,19 +998,10 @@ export const data = [
userId: 'user6',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-1',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-1' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1165,19 +1019,10 @@ export const data = [
userId: 'user7',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-1',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-1' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1189,14 +1034,8 @@ export const data = [
},
],
metadata: [
- {
- rudderId: 'user6<<>>topic-1',
- jobId: 6,
- },
- {
- rudderId: 'user7<<>>topic-1',
- jobId: 7,
- },
+ { rudderId: 'user6<<>>topic-1', jobId: 6, userId: 'u1' },
+ { rudderId: 'user7<<>>topic-1', jobId: 7, userId: 'u1' },
],
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
@@ -1267,19 +1106,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-2',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-2' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1297,19 +1127,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-2',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-2' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1321,14 +1142,8 @@ export const data = [
},
],
metadata: [
- {
- rudderId: 'user8<<>>topic-2',
- jobId: 8,
- },
- {
- rudderId: 'user8<<>>topic-2',
- jobId: 9,
- },
+ { rudderId: 'user8<<>>topic-2', jobId: 8, userId: 'u1' },
+ { rudderId: 'user8<<>>topic-2', jobId: 9, userId: 'u1' },
],
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
@@ -1399,19 +1214,10 @@ export const data = [
userId: 'user8',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
- },
- integrations: {
- All: true,
- KAFKA: {
- topic: 'topic-3',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
+ integrations: { All: true, KAFKA: { topic: 'topic-3' } },
messageId: '87c98fc2-561b-4631-8cd6-1d02cdd1429f',
timestamp: '2020-02-02T00:23:09.544Z',
receivedAt: '2021-07-08T02:45:06.851+05:30',
@@ -1422,12 +1228,7 @@ export const data = [
topic: 'topic-3',
},
],
- metadata: [
- {
- rudderId: 'user8<<>>topic-3',
- jobId: 10,
- },
- ],
+ metadata: [{ rudderId: 'user8<<>>topic-3', jobId: 10, userId: 'u1' }],
destination: {
ID: '1uzGR4rn915R6Xts9KRfWAzmgGL',
Name: 'local-kafka-test',
diff --git a/test/integrations/destinations/keen/router/data.ts b/test/integrations/destinations/keen/router/data.ts
index d46d2363e27..a88fc5dcce6 100644
--- a/test/integrations/destinations/keen/router/data.ts
+++ b/test/integrations/destinations/keen/router/data.ts
@@ -19,24 +19,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'sayan@gmail.com',
- anonymousId: '12345',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'sayan@gmail.com', anonymousId: '12345' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
type: 'track',
messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
@@ -51,18 +40,11 @@ export const data = [
user_actual_id: 12345,
user_time_spent: 50000,
},
- integrations: {
- All: true,
- },
- traits: {
- email: 'test@gmail.com',
- anonymousId: 'anon-id',
- },
+ integrations: { All: true },
+ traits: { email: 'test@gmail.com', anonymousId: 'anon-id' },
sentAt: '2019-10-14T11:15:53.296Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
projectID: 'abcde',
@@ -84,25 +66,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- traits: {
- email: 'sayan@gmail.com',
- anonymousId: '12345',
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ traits: { email: 'sayan@gmail.com', anonymousId: '12345' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
locale: 'en-US',
ip: '0.0.0.0',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
},
type: 'page',
messageId: '5e10d13a-bf9a-44bf-b884-43a9e591ea71',
@@ -117,19 +88,12 @@ export const data = [
title: 'Test Page',
url: 'www.rudderlabs.com',
},
- traits: {
- email: 'test@gmail.com',
- anonymousId: 'anon-id',
- },
- integrations: {
- All: true,
- },
+ traits: { email: 'test@gmail.com', anonymousId: 'anon-id' },
+ integrations: { All: true },
name: 'ApplicationLoaded',
sentAt: '2019-10-14T11:15:53.296Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
projectID: 'abcde',
@@ -165,16 +129,12 @@ export const data = [
keen: {
addons: [
{
- input: {
- ip: 'request_ip',
- },
+ input: { ip: 'request_ip' },
name: 'keen:ip_to_geo',
output: 'ip_geo_info',
},
{
- input: {
- ua_string: 'user_agent',
- },
+ input: { ua_string: 'user_agent' },
name: 'keen:ua_parser',
output: 'parsed_user_agent',
},
@@ -182,10 +142,7 @@ export const data = [
},
anonymousId: '00000000000000000000000000',
user: {
- traits: {
- anonymousId: 'anon-id',
- email: 'test@gmail.com',
- },
+ traits: { anonymousId: 'anon-id', email: 'test@gmail.com' },
userId: '12345',
},
user_agent:
@@ -196,21 +153,14 @@ export const data = [
files: {},
endpoint: 'https://api.keen.io/3.0/projects/abcde/events/test track event',
userId: '12345',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: 'xyz',
- },
+ headers: { 'Content-Type': 'application/json', Authorization: 'xyz' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
statusCode: 200,
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -239,16 +189,12 @@ export const data = [
keen: {
addons: [
{
- input: {
- ip: 'request_ip',
- },
+ input: { ip: 'request_ip' },
name: 'keen:ip_to_geo',
output: 'ip_geo_info',
},
{
- input: {
- ua_string: 'user_agent',
- },
+ input: { ua_string: 'user_agent' },
name: 'keen:ua_parser',
output: 'parsed_user_agent',
},
@@ -256,10 +202,7 @@ export const data = [
},
anonymousId: '00000000000000000000000000',
user: {
- traits: {
- anonymousId: 'anon-id',
- email: 'test@gmail.com',
- },
+ traits: { anonymousId: 'anon-id', email: 'test@gmail.com' },
userId: '12345',
},
path: '/test',
@@ -272,21 +215,14 @@ export const data = [
endpoint:
'https://api.keen.io/3.0/projects/abcde/events/Viewed ApplicationLoaded page',
userId: '12345',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: 'xyz',
- },
+ headers: { 'Content-Type': 'application/json', Authorization: 'xyz' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
statusCode: 200,
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/kissmetrics/router/data.ts b/test/integrations/destinations/kissmetrics/router/data.ts
index bba00edf961..827a493ae53 100644
--- a/test/integrations/destinations/kissmetrics/router/data.ts
+++ b/test/integrations/destinations/kissmetrics/router/data.ts
@@ -37,25 +37,15 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
originalTimestamp: '2020-01-24T06:29:02.358Z',
properties: {
@@ -79,6 +69,7 @@ export const data = [
jobId: 1,
messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
sourceId: '1WjrlZIy1d41MCceOrFbDVPnOPY',
+ userId: 'u1',
},
},
{
@@ -109,18 +100,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
city: 'Disney',
country: 'USA',
@@ -130,9 +113,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
traits: {
city: 'Disney-1',
country: 'India',
@@ -155,6 +136,7 @@ export const data = [
jobId: 2,
messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
sourceId: '1WjrlZIy1d41MCceOrFbDVPnOPY',
+ userId: 'u1',
},
},
],
@@ -187,12 +169,7 @@ export const data = [
_t: '1579847342',
_d: 1,
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
statusCode: 200,
@@ -206,6 +183,7 @@ export const data = [
jobId: 1,
messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
sourceId: '1WjrlZIy1d41MCceOrFbDVPnOPY',
+ userId: 'u1',
},
],
batched: false,
@@ -245,12 +223,7 @@ export const data = [
_t: '1579847342',
_d: 1,
},
- body: {
- JSON: {},
- XML: {},
- JSON_ARRAY: {},
- FORM: {},
- },
+ body: { JSON: {}, XML: {}, JSON_ARRAY: {}, FORM: {} },
files: {},
userId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
statusCode: 200,
@@ -264,6 +237,7 @@ export const data = [
jobId: 2,
messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
sourceId: '1WjrlZIy1d41MCceOrFbDVPnOPY',
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/klaviyo/network.ts b/test/integrations/destinations/klaviyo/network.ts
new file mode 100644
index 00000000000..d76d235c6f3
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/network.ts
@@ -0,0 +1,73 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/v2/list/XUepkK/subscribe',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/v2/list/XUepkK/members',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/profiles',
+ method: 'GET',
+ data: {
+ attributes: {
+ email: 'test3@rudderstack.com',
+ },
+ },
+ },
+ httpRes: {
+ status: 409,
+ data: {},
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/profiles',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 201,
+ data: {
+ data: {
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ attributes: {},
+ },
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/profiles',
+ method: 'POST',
+ headers: { Authorization: 'Klaviyo-API-Key dummyPrivateApiKeyforfailure' },
+ },
+ httpRes: {},
+ },
+ {
+ httpReq: {
+ url: 'https://a.klaviyo.com/api/profiles',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 201,
+ data: {
+ data: {
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ attributes: {},
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/data.ts b/test/integrations/destinations/klaviyo/processor/data.ts
new file mode 100644
index 00000000000..06c4a3e530e
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/data.ts
@@ -0,0 +1,15 @@
+import { ecomTestData } from './ecomTestData';
+import { groupTestData } from './groupTestData';
+import { identifyData } from './identifyTestData';
+import { screenTestData } from './screenTestData';
+import { trackTestData } from './trackTestData';
+import { validationTestData } from './validationTestData';
+
+export const data = [
+ ...identifyData,
+ ...trackTestData,
+ ...screenTestData,
+ ...groupTestData,
+ ...ecomTestData,
+ ...validationTestData,
+];
diff --git a/test/integrations/destinations/klaviyo/processor/ecomTestData.ts b/test/integrations/destinations/klaviyo/processor/ecomTestData.ts
new file mode 100644
index 00000000000..34eff45232a
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/ecomTestData.ts
@@ -0,0 +1,363 @@
+import { overrideDestination, transformResultBuilder, generateMetadata } from '../../../testUtils';
+import { ProcessorTestData } from '../../../testTypes';
+import { Destination } from '../../../../../src/types';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+const commonTraits = {
+ id: 'user@1',
+ age: '22',
+ name: 'Test',
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ anonymousId: '9c6bd77ea9da3e68',
+ description: 'Sample description',
+};
+
+const eventsEndpoint = 'https://a.klaviyo.com/api/events';
+
+const commonOutputHeaders = {
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ revision: '2023-02-22',
+};
+
+export const ecomTestData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-ecom-test-1',
+ name: 'klaviyo',
+ description: 'Track call with Ecom events (Viewed Product)',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain contextual traits and properties in the payload the event name should be Viewed Product and the properties should be mapped to the Klaviyo event properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product viewed',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ context: {
+ traits: commonTraits,
+ },
+ properties: {
+ name: 'test product',
+ product_id: '1114',
+ sku: 'WINNIePuh12',
+ image_url: 'http://www.example.com/path/to/product/image.png',
+ url: 'http://www.example.com/path/to/product',
+ brand: 'Not for Kids',
+ price: 9.9,
+ categories: ['Fiction', 'Children'],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventsEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'Viewed Product',
+ },
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ name: 'Test',
+ description: 'Sample description',
+ },
+ properties: {
+ ProductName: 'test product',
+ ProductID: '1114',
+ SKU: 'WINNIePuh12',
+ ImageURL: 'http://www.example.com/path/to/product/image.png',
+ URL: 'http://www.example.com/path/to/product',
+ Brand: 'Not for Kids',
+ Price: 9.9,
+ Categories: ['Fiction', 'Children'],
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-ecom-test-2',
+ name: 'klaviyo',
+ description: 'Track call with Ecom events (Checkout Started) with enabled flattenProperties',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain contextual traits and properties in the payload the event name should be Started Checkout and the properties should be mapped to the Klaviyo event properties with flattened properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { flattenProperties: true }),
+ message: {
+ type: 'track',
+ event: 'checkout started',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ context: {
+ traits: commonTraits,
+ },
+ properties: {
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ value: 20,
+ revenue: 15,
+ shipping: 4,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ products: [
+ {
+ product_id: '123',
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: '345',
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ quantity: 2,
+ category: 'Games',
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ },
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventsEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'Started Checkout',
+ },
+ properties: {
+ $event_id: '1234',
+ $value: 20,
+ 'items[0].ProductID': '123',
+ 'items[0].SKU': 'G-32',
+ 'items[0].ProductName': 'Monopoly',
+ 'items[0].Quantity': 1,
+ 'items[0].ItemPrice': 14,
+ 'items[0].ProductURL': 'https://www.website.com/product/path',
+ 'items[0].ImageURL': 'https://www.website.com/product/path.jpg',
+ 'items[1].ProductID': '345',
+ 'items[1].SKU': 'F-32',
+ 'items[1].ProductName': 'UNO',
+ 'items[1].Quantity': 2,
+ 'items[1].ItemPrice': 3.45,
+ },
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ name: 'Test',
+ description: 'Sample description',
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-ecom-test-3',
+ name: 'klaviyo',
+ description: 'Track call with Ecom events (Added to Cart) with properties.products',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain contextual traits and properties in the payload the event name should be Added to Cart and the properties should be mapped to the Klaviyo event properties with flattened properties and products array should be mapped to items array in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product added',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ context: {
+ traits: commonTraits,
+ },
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ order_id: '1234',
+ value: 12.12,
+ categories: ['Fiction3', 'Children3'],
+ checkout_url: 'http://www.heythere.com',
+ item_names: ['book1', 'book2'],
+ products: [
+ {
+ product_id: 'b1pid',
+ sku: '123x',
+ name: 'book1',
+ url: 'heyther.com',
+ price: 12,
+ },
+ {
+ product_id: 'b2pid',
+ sku: '123x',
+ name: 'book2',
+ url: 'heyther2.com',
+ price: 14,
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: 'https://a.klaviyo.com/api/events',
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'Added to Cart',
+ },
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ name: 'Test',
+ description: 'Sample description',
+ },
+ properties: {
+ $value: 12.12,
+ AddedItemCategories: ['Fiction3', 'Children3'],
+ ItemNames: ['book1', 'book2'],
+ CheckoutURL: 'http://www.heythere.com',
+ items: [
+ {
+ ProductID: 'b1pid',
+ SKU: '123x',
+ ProductName: 'book1',
+ ItemPrice: 12,
+ ProductURL: 'heyther.com',
+ },
+ {
+ ProductID: 'b2pid',
+ SKU: '123x',
+ ProductName: 'book2',
+ ItemPrice: 14,
+ ProductURL: 'heyther2.com',
+ },
+ ],
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/groupTestData.ts b/test/integrations/destinations/klaviyo/processor/groupTestData.ts
new file mode 100644
index 00000000000..0002f7ce90e
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/groupTestData.ts
@@ -0,0 +1,159 @@
+import { Destination } from '../../../../../src/types';
+import { ProcessorTestData } from '../../../testTypes';
+import {
+ generateMetadata,
+ generateSimplifiedGroupPayload,
+ transformResultBuilder,
+} from '../../../testUtils';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+const headers = {
+ Accept: 'application/json',
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ revision: '2023-02-22',
+};
+
+const commonEndpoint = 'https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs';
+
+export const groupTestData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-group-test-1',
+ name: 'klaviyo',
+ description: 'Simple group call',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only group payload and status code should be 200, for the group payload a subscription payload should be present in the final payload with email and phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedGroupPayload({
+ userId: 'user123',
+ groupId: 'XUepkK',
+ traits: {
+ subscribe: true,
+ },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: ['email'],
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ }),
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ JSON: {
+ data: {
+ attributes: {
+ list_id: 'XUepkK',
+ subscriptions: [
+ { email: 'test@rudderstack.com', phone_number: '+12 345 678 900' },
+ ],
+ },
+ type: 'profile-subscription-bulk-create-job',
+ },
+ },
+ endpoint: commonEndpoint,
+ headers: headers,
+ method: 'POST',
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-group-test-2',
+ name: 'klaviyo',
+ description: 'Simple group call without groupId',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as we are not sending groupId in the payload and groupId is a required field for group events',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedGroupPayload({
+ userId: 'user123',
+ groupId: '',
+ traits: {
+ subscribe: true,
+ },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ }),
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'groupId is a required field for group events',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ statusCode: 400,
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/identifyTestData.ts b/test/integrations/destinations/klaviyo/processor/identifyTestData.ts
new file mode 100644
index 00000000000..0dd47511330
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/identifyTestData.ts
@@ -0,0 +1,593 @@
+import { removeUndefinedAndNullValues } from '@rudderstack/integrations-lib';
+import {
+ overrideDestination,
+ transformResultBuilder,
+ generateSimplifiedIdentifyPayload,
+ generateMetadata,
+} from '../../../testUtils';
+import { ProcessorTestData } from '../../../testTypes';
+import { Destination } from '../../../../../src/types';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+const commonTraits = {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12 345 578 900',
+ userId: 'user@1',
+ title: 'Developer',
+ organization: 'Rudder',
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ Flagged: false,
+ Residence: 'Shibuya',
+ properties: {
+ listId: 'XUepkK',
+ subscribe: true,
+ consent: ['email', 'sms'],
+ },
+};
+
+const commonTraits2 = { ...commonTraits, street: '63, Shibuya' };
+
+const commonOutputUserProps = {
+ external_id: 'user@1',
+ email: 'test@rudderstack.com',
+ first_name: 'Test',
+ last_name: 'Rudderlabs',
+ phone_number: '+12 345 578 900',
+ title: 'Developer',
+ organization: 'Rudder',
+ location: {
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ },
+ properties: {
+ Flagged: false,
+ Residence: 'Shibuya',
+ },
+};
+
+const commonOutputUserProps2 = {
+ ...commonOutputUserProps,
+ location: { ...commonOutputUserProps.location, address1: '63, Shibuya' },
+ properties: { ...commonOutputUserProps.properties, street: '63, Shibuya' },
+};
+
+const commonOutputSubscriptionProps = {
+ list_id: 'XUepkK',
+ subscriptions: [
+ {
+ email: 'test@rudderstack.com',
+ phone_number: '+12 345 578 900',
+ channels: {
+ email: ['MARKETING'],
+ sms: ['MARKETING'],
+ },
+ },
+ ],
+};
+
+const commonOutputHeaders = {
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ revision: '2023-02-22',
+};
+
+const anonymousId = '97c46c81-3140-456d-b2a9-690d70aaca35';
+const userId = 'user@1';
+const sentAt = '2021-01-03T17:02:53.195Z';
+const originalTimestamp = '2021-01-03T17:02:53.193Z';
+const commonUserUpdateEndpoint = 'https://a.klaviyo.com/api/profiles/01GW3PHVY0MTCDGS0A1612HARX';
+const subscribeEndpoint = 'https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs';
+
+export const identifyData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-identify-test-1',
+ name: 'klaviyo',
+ description:
+ 'Identify and Subscribe user where the user doesnot exists[mock] (without suppression status code feature from server)',
+ scenario: 'Business + Framework',
+ successCriteria:
+ 'Response should containt two payloads one for profile updation and other for subscription, response status code should be 200',
+ comment:
+ 'Reasoning: As suppression status code feature is not enabled from server, so we would expect 2 responses from transformer one for profile updation (deafult behaviour) and other for subscription',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedIdentifyPayload({
+ context: {
+ traits: commonTraits2,
+ },
+ anonymousId,
+ userId,
+ sentAt,
+ }),
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'PATCH',
+ endpoint: commonUserUpdateEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: commonOutputUserProps2,
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ userId: '',
+ endpoint: subscribeEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile-subscription-bulk-create-job',
+ attributes: commonOutputSubscriptionProps,
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-2',
+ name: 'klaviyo',
+ description: 'Identify call for with flattenProperties enabled in destination config',
+ scenario: 'Business',
+ successCriteria:
+ 'The profile updation response should contain the flattened properties of the friend object',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { flattenProperties: true }),
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: {
+ ...commonTraits2,
+ friend: {
+ names: {
+ first: 'Alice',
+ last: 'Smith',
+ },
+ age: 25,
+ },
+ },
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'PATCH',
+ endpoint: commonUserUpdateEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile',
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ attributes: {
+ ...commonOutputUserProps2,
+ properties: {
+ ...commonOutputUserProps2.properties,
+ 'friend.age': 25,
+ 'friend.names.first': 'Alice',
+ 'friend.names.last': 'Smith',
+ },
+ },
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: subscribeEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile-subscription-bulk-create-job',
+ attributes: commonOutputSubscriptionProps,
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-3',
+ name: 'klaviyo',
+ description: 'Negative Test Case for Profile updation call and subcribe user',
+ scenario: 'Business + Framework',
+ successCriteria:
+ 'Response should contain error message and status code should be 500, as we are getting a network error from klaviyo',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKeyforfailure',
+ }),
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: {
+ ...commonTraits2,
+ email: 'test3@rudderstack.com',
+ },
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '{"message":"Failed to create user due to \\"\\"","destinationResponse":"\\"\\""}',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'network',
+ errorType: 'retryable',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ statusCode: 500,
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-4',
+ name: 'klaviyo',
+ description: 'Profile create update without subscribing the user',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only profile update payload and status code should be 200 as subscribe is set to false in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: {
+ ...commonTraits2,
+ properties: { ...commonTraits.properties, subscribe: false },
+ },
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(4),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'PATCH',
+ endpoint: commonUserUpdateEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: commonOutputUserProps2,
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(4),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-5',
+ name: 'klaviyo',
+ description: 'Identify call with enforceEmailAsPrimary enabled in destination config',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain two payloads one for profile updation and other for subscription, response status code should be 200, for the profile updation payload there should be no external_id field in the payload as enforceEmailAsPrimary is set to true in the destination config and the userId should be mapped to _id field in the properties object',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { enforceEmailAsPrimary: true }),
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: commonTraits2,
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(5),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'PATCH',
+ endpoint: commonUserUpdateEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: removeUndefinedAndNullValues({
+ ...commonOutputUserProps2,
+ properties: {
+ ...commonOutputUserProps2.properties,
+ _id: userId,
+ },
+ // remove external_id from the payload
+ external_id: undefined,
+ }),
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(5),
+ },
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: subscribeEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile-subscription-bulk-create-job',
+ attributes: commonOutputSubscriptionProps,
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(5),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-6',
+ name: 'klaviyo',
+ description: 'Identify call without user custom Properties',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain two payloads one for profile updation and other for subscription, response status code should be 200, for the profile updation payload does not have any custom properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: destination,
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: removeUndefinedAndNullValues({
+ ...commonTraits,
+ Flagged: undefined,
+ Residence: undefined,
+ }),
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(6),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'PATCH',
+ endpoint: commonUserUpdateEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: removeUndefinedAndNullValues({
+ ...commonOutputUserProps,
+ properties: undefined,
+ }),
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(6),
+ },
+ {
+ output: transformResultBuilder({
+ userId: '',
+ method: 'POST',
+ endpoint: subscribeEndpoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'profile-subscription-bulk-create-job',
+ attributes: commonOutputSubscriptionProps,
+ },
+ },
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(6),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-identify-test-7',
+ name: 'klaviyo',
+ description: 'Identify call without email and phone & enforceEmailAsPrimary enabled from UI',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as we are not sending email and phone in the payload and enforceEmailAsPrimary is enabled from UI',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { enforceEmailAsPrimary: true }),
+ message: generateSimplifiedIdentifyPayload({
+ sentAt,
+ userId,
+ context: {
+ traits: removeUndefinedAndNullValues({
+ ...commonTraits2,
+ email: undefined,
+ phone: undefined,
+ }),
+ },
+ anonymousId,
+ originalTimestamp,
+ }),
+ metadata: generateMetadata(7),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'None of email and phone are present in the payload',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ statusCode: 400,
+ metadata: generateMetadata(7),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/screenTestData.ts b/test/integrations/destinations/klaviyo/processor/screenTestData.ts
new file mode 100644
index 00000000000..0a20110236b
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/screenTestData.ts
@@ -0,0 +1,116 @@
+import { Destination } from '../../../../../src/types';
+import { ProcessorTestData } from '../../../testTypes';
+import {
+ generateMetadata,
+ generateSimplifiedPageOrScreenPayload,
+ transformResultBuilder,
+} from '../../../testUtils';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+export const screenTestData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-screen-test-1',
+ name: 'klaviyo',
+ description: 'Screen event call with properties and contextual traits',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain properties and contextual traits in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedPageOrScreenPayload(
+ {
+ event: 'TestEven001',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ id: 'user@1',
+ age: '22',
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ anonymousId: '9c6bd77ea9da3e68',
+ },
+ },
+ properties: {
+ PreviouslyVicePresident: true,
+ YearElected: 1801,
+ VicePresidents: ['Aaron Burr', 'George Clinton'],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ 'screen',
+ ),
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: 'https://a.klaviyo.com/api/events',
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ revision: '2023-02-22',
+ },
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'TestEven001',
+ },
+ properties: {
+ PreviouslyVicePresident: true,
+ YearElected: 1801,
+ VicePresidents: ['Aaron Burr', 'George Clinton'],
+ },
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/trackTestData.ts b/test/integrations/destinations/klaviyo/processor/trackTestData.ts
new file mode 100644
index 00000000000..3bc2b1747ad
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/trackTestData.ts
@@ -0,0 +1,340 @@
+import { Destination } from '../../../../../src/types';
+import { ProcessorTestData } from '../../../testTypes';
+import {
+ generateMetadata,
+ generateSimplifiedTrackPayload,
+ generateTrackPayload,
+ overrideDestination,
+ transformResultBuilder,
+} from '../../../testUtils';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+const commonTraits = {
+ id: 'user@1',
+ age: '22',
+ anonymousId: '9c6bd77ea9da3e68',
+};
+
+const commonProps = {
+ PreviouslVicePresident: true,
+ YearElected: 1801,
+ VicePresidents: ['AaronBurr', 'GeorgeClinton'],
+};
+
+const commonOutputHeaders = {
+ Accept: 'application/json',
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ revision: '2023-02-22',
+};
+
+const eventEndPoint = 'https://a.klaviyo.com/api/events';
+
+export const trackTestData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-track-test-1',
+ name: 'klaviyo',
+ description: 'Track event call with flatten properties enabled in destination config',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain flattened properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { flattenProperties: true }),
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ plan_details: {
+ plan_type: 'gold',
+ duration: '3 months',
+ },
+ },
+ },
+ properties: {
+ vicePresdentInfo: commonProps,
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'TestEven001',
+ },
+ properties: {
+ 'vicePresdentInfo.PreviouslVicePresident': true,
+ 'vicePresdentInfo.VicePresidents': ['AaronBurr', 'GeorgeClinton'],
+ 'vicePresdentInfo.YearElected': 1801,
+ },
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ 'plan_details.plan_type': 'gold',
+ 'plan_details.duration': '3 months',
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-track-test-2',
+ name: 'klaviyo',
+ description: 'Simple track event call',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain contextual traits and properties in the payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven002',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ name: 'Test',
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ description: 'Sample description',
+ },
+ },
+ properties: {
+ ...commonProps,
+ revenue: 3000,
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'TestEven002',
+ },
+ properties: commonProps,
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ $id: 'sajal12',
+ age: '22',
+ name: 'Test',
+ description: 'Sample description',
+ },
+ value: 3000,
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(2),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-track-test-3',
+ name: 'klaviyo',
+ description: 'Track event call, with make email or phone as primary identifier toggle on',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only event payload and status code should be 200, for the event payload should contain contextual traits and properties in the payload, and email should be mapped to $email and userId should be mapped to _id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { enforceEmailAsPrimary: true }),
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context: {
+ traits: {
+ ...commonTraits,
+ email: 'test@rudderstack.com',
+ phone: '9112340375',
+ },
+ },
+ properties: commonProps,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint: eventEndPoint,
+ headers: commonOutputHeaders,
+ JSON: {
+ data: {
+ type: 'event',
+ attributes: {
+ metric: {
+ name: 'TestEven001',
+ },
+ properties: commonProps,
+ profile: {
+ $email: 'test@rudderstack.com',
+ $phone_number: '9112340375',
+ age: '22',
+ _id: 'sajal12',
+ },
+ },
+ },
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ metadata: generateMetadata(3),
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'klaviyo-track-test-4',
+ name: 'klaviyo',
+ description:
+ 'Track event call, without email and phone & with (make email or phone as primary identifier) toggle on',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as we are not sending email and phone in the payload and enforceEmailAsPrimary is enabled from UI',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: overrideDestination(destination, { enforceEmailAsPrimary: true }),
+ message: generateSimplifiedTrackPayload({
+ type: 'track',
+ event: 'TestEven001',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context: {
+ traits: commonTraits,
+ },
+ properties: commonProps,
+ anonymousId: '9c6bd77ea9da3e68',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ }),
+ metadata: generateMetadata(4),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'None of email and phone are present in the payload',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ statusCode: 400,
+ metadata: generateMetadata(4),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/processor/validationTestData.ts b/test/integrations/destinations/klaviyo/processor/validationTestData.ts
new file mode 100644
index 00000000000..801e03d5417
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/processor/validationTestData.ts
@@ -0,0 +1,83 @@
+import { Destination } from '../../../../../src/types';
+import { ProcessorTestData } from '../../../testTypes';
+import { generateMetadata } from '../../../testUtils';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+export const validationTestData: ProcessorTestData[] = [
+ {
+ id: 'klaviyo-validation-test-1',
+ name: 'klaviyo',
+ description: '[Error]: Check for unsupported message type',
+ scenario: 'Framework',
+ successCriteria:
+ 'Response should contain error message and status code should be 400, as we are sending a message type which is not supported by Klaviyo destination and the error message should be Event type random is not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ userId: 'user123',
+ type: 'random',
+ groupId: 'XUepkK',
+ traits: {
+ subscribe: true,
+ },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type random is not supported',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/klaviyo/router/data.ts b/test/integrations/destinations/klaviyo/router/data.ts
new file mode 100644
index 00000000000..8866a8a546b
--- /dev/null
+++ b/test/integrations/destinations/klaviyo/router/data.ts
@@ -0,0 +1,371 @@
+import { Destination, RouterTransformationRequest } from '../../../../../src/types';
+import { RouterTestData } from '../../../testTypes';
+import { generateMetadata } from '../../../testUtils';
+
+const destination: Destination = {
+ ID: '123',
+ Name: 'klaviyo',
+ DestinationDefinition: {
+ ID: '123',
+ Name: 'klaviyo',
+ DisplayName: 'klaviyo',
+ Config: {},
+ },
+ Config: {
+ publicApiKey: 'dummyPublicApiKey',
+ privateApiKey: 'dummyPrivateApiKey',
+ },
+ Enabled: true,
+ WorkspaceID: '123',
+ Transformations: [],
+};
+
+const routerRequest: RouterTransformationRequest = {
+ input: [
+ {
+ destination,
+ metadata: generateMetadata(1),
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'test',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12 345 578 900',
+ userId: 'Testc',
+ title: 'Developer',
+ organization: 'Rudder',
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ Flagged: false,
+ Residence: 'Shibuya',
+ properties: { consent: ['email', 'sms'] },
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: { All: true },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ {
+ destination,
+ metadata: generateMetadata(2),
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'test',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12 345 578 900',
+ userId: 'test',
+ title: 'Developer',
+ organization: 'Rudder',
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ Flagged: false,
+ Residence: 'Shibuya',
+ properties: { listId: 'XUepkK', subscribe: true, consent: ['email', 'sms'] },
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: { All: true },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ {
+ destination,
+ metadata: generateMetadata(3),
+ message: {
+ userId: 'user123',
+ type: 'group',
+ groupId: 'XUepkK',
+ traits: { subscribe: true },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: ['email'],
+ },
+ ip: '14.5.67.21',
+ library: { name: 'http' },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ {
+ destination,
+ metadata: generateMetadata(4),
+ message: {
+ userId: 'user123',
+ type: 'random',
+ groupId: 'XUepkK',
+ traits: { subscribe: true },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ ip: '14.5.67.21',
+ library: { name: 'http' },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ {
+ destination,
+ metadata: generateMetadata(5),
+ message: {
+ userId: 'user123',
+ type: 'group',
+ groupId: '',
+ traits: { subscribe: true },
+ context: {
+ traits: {
+ email: 'test@rudderstack.com',
+ phone: '+12 345 678 900',
+ consent: 'email',
+ },
+ ip: '14.5.67.21',
+ library: { name: 'http' },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ },
+ },
+ ],
+ destType: 'klaviyo',
+};
+
+export const data: RouterTestData[] = [
+ {
+ id: 'klaviyo-router-test-1',
+ name: 'klaviyo',
+ description: 'Basic Router Test to test multiple payloads',
+ scenario: 'Framework',
+ successCriteria: 'All the subscription events should be batched',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: routerRequest,
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs',
+ headers: {
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ revision: '2023-02-22',
+ },
+ params: {},
+ body: {
+ JSON: {
+ data: {
+ type: 'profile-subscription-bulk-create-job',
+ attributes: {
+ list_id: 'XUepkK',
+ subscriptions: [
+ { email: 'test@rudderstack.com', phone_number: '+12 345 678 900' },
+ {
+ email: 'test@rudderstack.com',
+ phone_number: '+12 345 578 900',
+ channels: { email: ['MARKETING'], sms: ['MARKETING'] },
+ },
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://a.klaviyo.com/api/profiles/01GW3PHVY0MTCDGS0A1612HARX',
+ headers: {
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ revision: '2023-02-22',
+ },
+ params: {},
+ body: {
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: {
+ external_id: 'test',
+ email: 'test@rudderstack.com',
+ first_name: 'Test',
+ last_name: 'Rudderlabs',
+ phone_number: '+12 345 578 900',
+ title: 'Developer',
+ organization: 'Rudder',
+ location: {
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ },
+ properties: { Flagged: false, Residence: 'Shibuya' },
+ },
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [generateMetadata(3), generateMetadata(2)],
+ batched: true,
+ statusCode: 200,
+ destination,
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PATCH',
+ endpoint: 'https://a.klaviyo.com/api/profiles/01GW3PHVY0MTCDGS0A1612HARX',
+ headers: {
+ Authorization: 'Klaviyo-API-Key dummyPrivateApiKey',
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ revision: '2023-02-22',
+ },
+ params: {},
+ body: {
+ JSON: {
+ data: {
+ type: 'profile',
+ attributes: {
+ external_id: 'test',
+ email: 'test@rudderstack.com',
+ first_name: 'Test',
+ last_name: 'Rudderlabs',
+ phone_number: '+12 345 578 900',
+ title: 'Developer',
+ organization: 'Rudder',
+ location: {
+ city: 'Tokyo',
+ region: 'Kanto',
+ country: 'JP',
+ zip: '100-0001',
+ },
+ properties: { Flagged: false, Residence: 'Shibuya' },
+ },
+ id: '01GW3PHVY0MTCDGS0A1612HARX',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [generateMetadata(1)],
+ batched: false,
+ statusCode: 200,
+ destination,
+ },
+ {
+ metadata: [generateMetadata(4)],
+ batched: false,
+ statusCode: 400,
+ error: 'Event type random is not supported',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ destination,
+ },
+ {
+ metadata: [generateMetadata(5)],
+ batched: false,
+ statusCode: 400,
+ error: 'groupId is a required field for group events',
+ statTags: {
+ destType: 'KLAVIYO',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ },
+ destination,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/kustomer/network.ts b/test/integrations/destinations/kustomer/network.ts
new file mode 100644
index 00000000000..527b47ce2f7
--- /dev/null
+++ b/test/integrations/destinations/kustomer/network.ts
@@ -0,0 +1,423 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/externalId=annodD',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ data: {
+ type: 'customer',
+ id: '58210c3db0f09110006b7953',
+ attributes: {
+ name: 'AnnoD',
+ displayName: 'AnnoD',
+ displayColor: 'yellow',
+ displayIcon: 'flower',
+ externalId: 'annodD',
+ externalIds: [
+ {
+ externalId: 'annodD',
+ verified: true,
+ id: null,
+ },
+ ],
+ sharedExternalIds: [],
+ signedUpAt: null,
+ avatarUrl: null,
+ username: null,
+ emails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: true,
+ type: 'home',
+ id: null,
+ },
+ ],
+ sharedEmails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: false,
+ type: 'home',
+ id: null,
+ },
+ ],
+ phones: [],
+ sharedPhones: [],
+ socials: [],
+ sharedSocials: [],
+ urls: [],
+ locations: [],
+ activeUsers: [],
+ watchers: [],
+ recentLocation: {
+ updatedAt: '2016-11-07T23:22:01.746Z',
+ },
+ locale: null,
+ timeZone: null,
+ birthdayAt: null,
+ gender: null,
+ presence: 'offline',
+ createdAt: '2016-11-07T23:20:29.080Z',
+ updatedAt: '2016-11-09T04:47:07.036Z',
+ modifiedAt: '2016-11-09T04:47:07.036Z',
+ lastSeenAt: '2016-11-07T23:23:51.582Z',
+ lastActivityAt: '2016-11-09T04:47:07.036Z',
+ lastCustomerActivityAt: '2016-11-07T23:23:51.582Z',
+ lastMessageIn: {
+ sentAt: '2016-11-07T23:22:02.281Z',
+ sentiment: null,
+ },
+ lastConversation: {
+ id: '58210c99b0f09110006b7969',
+ sentiment: {
+ confidence: 0.649023,
+ polarity: 1,
+ },
+ tags: [],
+ },
+ conversationCounts: {
+ all: 3,
+ snoozed: 0,
+ open: 2,
+ done: 1,
+ },
+ preview: {
+ previewAt: '2016-11-07T23:23:26.039Z',
+ type: 'message_out',
+ text: 'dfsd fsdsfdsfdsf',
+ subject: 'Hi, do you guys have an XXL hoodie',
+ },
+ tags: [],
+ sentiment: {
+ polarity: 1,
+ confidence: 0.649023,
+ },
+ progressiveStatus: 'open',
+ verified: true,
+ rev: 37,
+ },
+ relationships: {
+ org: {
+ links: {
+ self: '/v1/orgs/57f29863a1dbf61100e6aa92',
+ },
+ data: {
+ type: 'org',
+ id: '57f29863a1dbf61100e6aa92',
+ },
+ },
+ messages: {
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953/messages',
+ },
+ },
+ modifiedBy: {
+ links: {
+ self: '/v1/users/58190b991f2932100010d683',
+ },
+ data: {
+ type: 'user',
+ id: '58190b991f2932100010d683',
+ },
+ },
+ },
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953',
+ },
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/externalId=58210c3db0f09110006b7953',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ data: {
+ type: 'customer',
+ id: '58210c3db0f09110006b7953',
+ attributes: {
+ name: 'AnnoD',
+ displayName: 'AnnoD',
+ displayColor: 'yellow',
+ displayIcon: 'flower',
+ externalId: 'annodD',
+ externalIds: [
+ {
+ externalId: 'annodD',
+ verified: true,
+ id: null,
+ },
+ ],
+ sharedExternalIds: [],
+ signedUpAt: null,
+ avatarUrl: null,
+ username: null,
+ emails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: true,
+ type: 'home',
+ id: null,
+ },
+ ],
+ sharedEmails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: false,
+ type: 'home',
+ id: null,
+ },
+ ],
+ phones: [],
+ sharedPhones: [],
+ socials: [],
+ sharedSocials: [],
+ urls: [],
+ locations: [],
+ activeUsers: [],
+ watchers: [],
+ recentLocation: {
+ updatedAt: '2016-11-07T23:22:01.746Z',
+ },
+ locale: null,
+ timeZone: null,
+ birthdayAt: null,
+ gender: null,
+ presence: 'offline',
+ createdAt: '2016-11-07T23:20:29.080Z',
+ updatedAt: '2016-11-09T04:47:07.036Z',
+ modifiedAt: '2016-11-09T04:47:07.036Z',
+ lastSeenAt: '2016-11-07T23:23:51.582Z',
+ lastActivityAt: '2016-11-09T04:47:07.036Z',
+ lastCustomerActivityAt: '2016-11-07T23:23:51.582Z',
+ lastMessageIn: {
+ sentAt: '2016-11-07T23:22:02.281Z',
+ sentiment: null,
+ },
+ lastConversation: {
+ id: '58210c99b0f09110006b7969',
+ sentiment: {
+ confidence: 0.649023,
+ polarity: 1,
+ },
+ tags: [],
+ },
+ conversationCounts: {
+ all: 3,
+ snoozed: 0,
+ open: 2,
+ done: 1,
+ },
+ preview: {
+ previewAt: '2016-11-07T23:23:26.039Z',
+ type: 'message_out',
+ text: 'dfsd fsdsfdsfdsf',
+ subject: 'Hi, do you guys have an XXL hoodie',
+ },
+ tags: [],
+ sentiment: {
+ polarity: 1,
+ confidence: 0.649023,
+ },
+ progressiveStatus: 'open',
+ verified: true,
+ rev: 37,
+ },
+ relationships: {
+ org: {
+ links: {
+ self: '/v1/orgs/57f29863a1dbf61100e6aa92',
+ },
+ data: {
+ type: 'org',
+ id: '57f29863a1dbf61100e6aa92',
+ },
+ },
+ messages: {
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953/messages',
+ },
+ },
+ modifiedBy: {
+ links: {
+ self: '/v1/users/58190b991f2932100010d683',
+ },
+ data: {
+ type: 'user',
+ id: '58190b991f2932100010d683',
+ },
+ },
+ },
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953',
+ },
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.prod2.kustomerapp.com/v1/customers/externalId=58210c3db0f09110006b7953',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ data: {
+ type: 'customer',
+ id: '58210c3db0f09110006b7953',
+ attributes: {
+ name: 'AnnoD',
+ displayName: 'AnnoD',
+ displayColor: 'yellow',
+ displayIcon: 'flower',
+ externalId: 'annodD',
+ externalIds: [
+ {
+ externalId: 'annodD',
+ verified: true,
+ id: null,
+ },
+ ],
+ sharedExternalIds: [],
+ signedUpAt: null,
+ avatarUrl: null,
+ username: null,
+ emails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: true,
+ type: 'home',
+ id: null,
+ },
+ ],
+ sharedEmails: [
+ {
+ email: 'annod@kustomer.com',
+ verified: false,
+ type: 'home',
+ id: null,
+ },
+ ],
+ phones: [],
+ sharedPhones: [],
+ socials: [],
+ sharedSocials: [],
+ urls: [],
+ locations: [],
+ activeUsers: [],
+ watchers: [],
+ recentLocation: {
+ updatedAt: '2016-11-07T23:22:01.746Z',
+ },
+ locale: null,
+ timeZone: null,
+ birthdayAt: null,
+ gender: null,
+ presence: 'offline',
+ createdAt: '2016-11-07T23:20:29.080Z',
+ updatedAt: '2016-11-09T04:47:07.036Z',
+ modifiedAt: '2016-11-09T04:47:07.036Z',
+ lastSeenAt: '2016-11-07T23:23:51.582Z',
+ lastActivityAt: '2016-11-09T04:47:07.036Z',
+ lastCustomerActivityAt: '2016-11-07T23:23:51.582Z',
+ lastMessageIn: {
+ sentAt: '2016-11-07T23:22:02.281Z',
+ sentiment: null,
+ },
+ lastConversation: {
+ id: '58210c99b0f09110006b7969',
+ sentiment: {
+ confidence: 0.649023,
+ polarity: 1,
+ },
+ tags: [],
+ },
+ conversationCounts: {
+ all: 3,
+ snoozed: 0,
+ open: 2,
+ done: 1,
+ },
+ preview: {
+ previewAt: '2016-11-07T23:23:26.039Z',
+ type: 'message_out',
+ text: 'dfsd fsdsfdsfdsf',
+ subject: 'Hi, do you guys have an XXL hoodie',
+ },
+ tags: [],
+ sentiment: {
+ polarity: 1,
+ confidence: 0.649023,
+ },
+ progressiveStatus: 'open',
+ verified: true,
+ rev: 37,
+ },
+ relationships: {
+ org: {
+ links: {
+ self: '/v1/orgs/57f29863a1dbf61100e6aa92',
+ },
+ data: {
+ type: 'org',
+ id: '57f29863a1dbf61100e6aa92',
+ },
+ },
+ messages: {
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953/messages',
+ },
+ },
+ modifiedBy: {
+ links: {
+ self: '/v1/users/58190b991f2932100010d683',
+ },
+ data: {
+ type: 'user',
+ id: '58190b991f2932100010d683',
+ },
+ },
+ },
+ links: {
+ self: '/v1/customers/58210c3db0f09110006b7953',
+ },
+ },
+ },
+ status: 204,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/externalId=Testc',
+ method: 'GET',
+ },
+ httpRes: { error: 'Request failed', status: 404 },
+ },
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/email=test@rudderstack.com',
+ method: 'GET',
+ },
+ httpRes: { error: 'Request failed', status: 404 },
+ },
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/externalId=97c46c81-3140-456d-b2a9-690d70aaca35',
+ method: 'GET',
+ },
+ httpRes: { error: 'Request failed', status: 404 },
+ },
+ {
+ httpReq: {
+ url: 'https://api.kustomerapp.com/v1/customers/externalId=testc',
+ method: 'GET',
+ },
+ httpRes: { error: 'Request failed', status: 404 },
+ },
+];
diff --git a/test/integrations/destinations/kustomer/processor/data.ts b/test/integrations/destinations/kustomer/processor/data.ts
new file mode 100644
index 00000000000..ba8407baaff
--- /dev/null
+++ b/test/integrations/destinations/kustomer/processor/data.ts
@@ -0,0 +1,1901 @@
+export const data = [
+ {
+ name: 'kustomer',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'Testc',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ name: 'Test Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12345578900',
+ birthday: '2005-01-01T23:28:56.782Z',
+ userId: 'Testc',
+ address: {
+ street: '24 Dovers Lane',
+ city: 'Miami',
+ state: 'Florida',
+ postalCode: '1890001',
+ },
+ userName: 'Testc47',
+ company: 'Rudderstack',
+ createdAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ website: 'www.mattertoast873.com',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/customers',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Test Rudderlabs',
+ externalId: 'Testc',
+ username: 'Testc47',
+ company: 'Rudderstack',
+ signedUpAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatarUrl: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ locale: 'en-US',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ urls: [
+ {
+ url: 'www.mattertoast873.com',
+ },
+ ],
+ locations: [
+ {
+ type: 'home',
+ address: '24 Dovers Lane Miami Florida 1890001',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ userId: '58210c3db0f09110006b7953',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ name: 'Ano Domeni',
+ phone: '+12345578000',
+ birthday: '2005-01-01T23:28:56.782Z',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://api.kustomerapp.com/v1/customers/58210c3db0f09110006b7953?replace=false',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Ano Domeni',
+ externalId: '58210c3db0f09110006b7953',
+ locale: 'en-US',
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578000',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'screen',
+ event: 'Test-Event-Screen',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'Testc',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '10',
+ },
+ app: {
+ name: 'KlaviyoTest',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '9c6bd77ea9da3e68',
+ name: 'raphaelin',
+ type: 'android',
+ model: 'Redmi K20 Pro',
+ manufacturer: 'Xiaomi',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2210,
+ density: 440,
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.2',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)',
+ },
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ originalServing: '2021-01-25T15:32:56.409Z',
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'Testc',
+ },
+ event: {
+ name: 'Screen-Viewed-Test-Event-Screen',
+ meta: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ originalServing: '2021-01-25T15:32:56.409Z',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ name: 'Cart-Viewed',
+ type: 'page',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ userId: 'userid',
+ profession: 'Student',
+ anonymousId: 'd80b66d5-b33d-412d-866f-r4fft5841af',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ category: 'Cart',
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ url: 'http://morkey.in',
+ name: 'Cart Viewed',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'user@doe',
+ },
+ event: {
+ name: 'Web-Page-Viewed-Cart-Viewed',
+ meta: {
+ url: 'http://morkey.in',
+ name: 'Cart Viewed',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'page',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ traits: {
+ userId: 'userid',
+ profession: 'Student',
+ anonymousId: 'd80b66d5-b33d-412d-866f-r4fft5841af',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ category: 'Cart',
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ kustomerTrackingId: '829131sjad',
+ kustomerSessionId: 'hsad522',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'user@doe',
+ },
+ event: {
+ name: 'Web-Page-Viewed',
+ sessionId: 'hsad522',
+ trackingId: '829131sjad',
+ meta: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Tracking-Weekender',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ YearServicedNum: 211,
+ region: 'strapis',
+ kustomerTrackingId: 'sahetwiac',
+ kustomerSessionId: '63nsa22',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ locale: 'en-US',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'user@doe',
+ },
+ event: {
+ name: 'Tracking-Weekender',
+ sessionId: '63nsa22',
+ trackingId: 'sahetwiac',
+ meta: {
+ YearServicedNum: 211,
+ region: 'strapis',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Tracking-Weekender2',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ YearServicedNum: 211,
+ 'reg_8-821x': false,
+ kustomer_tracking_id: 'sahetwiac',
+ kustomer_session_id: '63nsa22',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ locale: 'en-US',
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ event: {
+ meta: {
+ YearServicedNum: 211,
+ 'reg_8-821x': false,
+ },
+ name: 'Tracking-Weekender2',
+ sessionId: '63nsa22',
+ trackingId: 'sahetwiac',
+ },
+ identity: {
+ externalId: 'user@doe',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ genericPage: true,
+ },
+ },
+ message: {
+ type: 'page',
+ name: 'Unfinished page',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ locale: 'en-US',
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'user@doe',
+ },
+ event: {
+ name: 'Web-Page-Viewed',
+ meta: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ category: 'Cart',
+ referrer: 'morkey',
+ domain: 'morkey.com',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ genericScreen: true,
+ },
+ },
+ message: {
+ type: 'screen',
+ event: 'Test-Event-Screen',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'Testc',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '10',
+ },
+ app: {
+ name: 'KlaviyoTest',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '9c6bd77ea9da3e68',
+ name: 'raphaelin',
+ type: 'android',
+ model: 'Redmi K20 Pro',
+ manufacturer: 'Xiaomi',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2210,
+ density: 440,
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.2',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)',
+ },
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ originalServing: '2021-01-25T15:32:56.409Z',
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'Testc',
+ },
+ event: {
+ name: 'Screen-Viewed',
+ meta: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ originalServing: '2021-01-25T15:32:56.409Z',
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'Testc',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12345578900',
+ birthday: '2005-01-01T23:28:56.782Z',
+ userId: 'Testc',
+ address: {
+ street: '24 Dovers Lane',
+ city: 'Miami',
+ state: 'Florida',
+ postalCode: '1890001',
+ },
+ userName: 'Testc47',
+ company: 'Rudderstack',
+ createdAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ website: 'www.mattertoast873.com',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/customers',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Test Rudderlabs',
+ externalId: 'Testc',
+ username: 'Testc47',
+ company: 'Rudderstack',
+ signedUpAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatarUrl: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ locale: 'en-US',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ urls: [
+ {
+ url: 'www.mattertoast873.com',
+ },
+ ],
+ locations: [
+ {
+ type: 'home',
+ address: '24 Dovers Lane Miami Florida 1890001',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'Testc',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ birthday: '2005-01-01T23:28:56.782Z',
+ userId: 'Testc',
+ address: 'test address string',
+ userName: 'Testc47',
+ company: 'Rudderstack',
+ createdAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ website: 'www.mattertoast873.com',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/customers',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Test Rudderlabs',
+ externalId: 'Testc',
+ username: 'Testc47',
+ company: 'Rudderstack',
+ signedUpAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatarUrl: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ locale: 'en-US',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ urls: [
+ {
+ url: 'www.mattertoast873.com',
+ },
+ ],
+ locations: [
+ {
+ type: 'home',
+ address: 'test address string',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'Testc',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ birthday: '2005-01-01T23:28:56.782Z',
+ userId: 'Testc',
+ address: 'test address string',
+ userName: 'Testc47',
+ company: 'Rudderstack',
+ createdAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ website: 'www.mattertoast873.com',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ externalId: [
+ {
+ type: 'kustomerId',
+ id: 'abcd1234',
+ },
+ ],
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.kustomerapp.com/v1/customers/abcd1234?replace=false',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'Test Rudderlabs',
+ externalId: 'Testc',
+ username: 'Testc47',
+ company: 'Rudderstack',
+ signedUpAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatarUrl: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ locale: 'en-US',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@Testc',
+ url: 'http://twitter.com/Testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'Testc',
+ url: 'http://facebook.com/Testc',
+ },
+ ],
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ emails: [
+ {
+ type: 'home',
+ email: 'test@rudderstack.com',
+ },
+ ],
+ phones: [
+ {
+ type: 'home',
+ phone: '+12345578900',
+ },
+ ],
+ urls: [
+ {
+ url: 'www.mattertoast873.com',
+ },
+ ],
+ locations: [
+ {
+ type: 'home',
+ address: 'test address string',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ genericScreen: true,
+ },
+ },
+ message: {
+ type: 'screen',
+ event: 'Test-Event-Screen',
+ userId: 'utsabc',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '10',
+ },
+ app: {
+ name: 'KlaviyoTest',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '9c6bd77ea9da3e68',
+ name: 'raphaelin',
+ type: 'android',
+ model: 'Redmi K20 Pro',
+ manufacturer: 'Xiaomi',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2210,
+ density: 440,
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.2',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)',
+ sessionId: 'hsad522',
+ },
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2023-01-10T15:32:56.409Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'utsabc',
+ },
+ event: {
+ name: 'Screen-Viewed',
+ sessionId: 'hsad522',
+ meta: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'kustomer',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ baseEndpoint: 'https://api.prod2.kustomerapp.com',
+ genericScreen: true,
+ },
+ },
+ message: {
+ type: 'screen',
+ event: 'Test-Event-Screen',
+ userId: 'Testc',
+ channel: 'mobile',
+ context: {
+ os: {
+ name: 'Android',
+ version: '10',
+ },
+ app: {
+ name: 'KlaviyoTest',
+ build: '1',
+ version: '1.0',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ },
+ device: {
+ id: '9c6bd77ea9da3e68',
+ name: 'raphaelin',
+ type: 'android',
+ model: 'Redmi K20 Pro',
+ manufacturer: 'Xiaomi',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1080,
+ height: 2210,
+ density: 440,
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.2',
+ },
+ network: {
+ wifi: true,
+ carrier: 'airtel',
+ cellular: true,
+ bluetooth: false,
+ },
+ timezone: 'Asia/Kolkata',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 10; Redmi K20 Pro MIUI/V12.0.4.0.QFKINXM)',
+ sessionId: 'hsad522',
+ },
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2023-01-10T15:32:56.409Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.prod2.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ externalId: 'Testc',
+ },
+ event: {
+ name: 'Screen-Viewed',
+ sessionId: 'hsad522',
+ meta: {
+ hasAccount: 'true',
+ YearSelectedNum: 1801,
+ },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/kustomer/router/data.ts b/test/integrations/destinations/kustomer/router/data.ts
new file mode 100644
index 00000000000..06f6243cf20
--- /dev/null
+++ b/test/integrations/destinations/kustomer/router/data.ts
@@ -0,0 +1,330 @@
+export const data = [
+ {
+ name: 'kustomer',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'testc',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: {
+ name: 'test Rudderlabs',
+ email: 'test@rudderstack.com',
+ phone: '+12345578900',
+ birthday: '2005-01-01T23:28:56.782Z',
+ userId: 'testc',
+ address: {
+ street: '24 Dovers Lane',
+ city: 'Miami',
+ state: 'Florida',
+ postalCode: '1890001',
+ },
+ userName: 'testc47',
+ company: 'Rudderstack',
+ createdAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatar: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ website: 'www.mattertoast873.com',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@testc',
+ url: 'http://twitter.com/testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'testc',
+ url: 'http://facebook.com/testc',
+ },
+ ],
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ integrations: { All: true },
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'dummyApiKey', genericPage: false, genericScreen: false },
+ },
+ },
+ {
+ message: {
+ type: 'track',
+ event: 'Tracking-Weekender',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ YearServicedNum: 211,
+ region: 'strapis',
+ kustomerTrackingId: 'sahetwiac',
+ kustomerSessionId: '63nsa22',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ locale: 'en-US',
+ integrations: { All: true },
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: { apiKey: 'dummyApiKey', genericPage: false, genericScreen: false },
+ },
+ },
+ {
+ message: {
+ type: 'track',
+ event: 'Tracking-Weekender',
+ sentAt: '2021-01-03T17:02:53.197Z',
+ userId: 'user@doe',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://morkey.in',
+ path: '/cart',
+ title: 'miphone',
+ search: 'MI',
+ referrer: 'morkey',
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '15129730-eb00-4db7-8db2-799566ccb2ef',
+ properties: {
+ YearServicedNum: 211,
+ region: 'strapis',
+ kustomerTrackingId: 'sahetwiac',
+ kustomerSessionId: '63nsa22',
+ },
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ locale: 'en-US',
+ integrations: { All: true },
+ originalTimestamp: '2021-01-03T17:02:53.195Z',
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: {
+ Config: {
+ baseEndpoint: 'https://api.prod2.kustomerapp.com',
+ apiKey: 'dummyApiKey',
+ genericPage: false,
+ genericScreen: false,
+ },
+ },
+ },
+ ],
+ destType: 'kustomer',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/customers',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'test Rudderlabs',
+ externalId: 'testc',
+ username: 'testc47',
+ company: 'Rudderstack',
+ signedUpAt: '2015-04-17T12:37:42.146Z',
+ lastActivityAt: '2016-04-17T12:37:42.146Z',
+ lastCustomerActivityAt: '2017-04-17T12:37:42.146Z',
+ lastSeenAt: '2017-04-17T12:37:42.146Z',
+ avatarUrl: 'https://homepages.cae.wisc.edu/~ece533/images/boat.png',
+ gender: 'm',
+ tags: ['happy', 'satisfied'],
+ locale: 'en-US',
+ socials: [
+ {
+ verified: true,
+ userid: '100',
+ type: 'twitter',
+ username: '@testc',
+ url: 'http://twitter.com/testc',
+ },
+ {
+ verified: false,
+ userid: '200',
+ type: 'facebook',
+ username: 'testc',
+ url: 'http://facebook.com/testc',
+ },
+ ],
+ birthdayAt: '2005-01-01T23:28:56.782Z',
+ emails: [{ type: 'home', email: 'test@rudderstack.com' }],
+ phones: [{ type: 'home', phone: '+12345578900' }],
+ urls: [{ url: 'www.mattertoast873.com' }],
+ locations: [{ type: 'home', address: '24 Dovers Lane Miami Florida 1890001' }],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummyApiKey', genericPage: false, genericScreen: false },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: { externalId: 'user@doe' },
+ event: {
+ name: 'Tracking-Weekender',
+ sessionId: '63nsa22',
+ trackingId: 'sahetwiac',
+ meta: { YearServicedNum: 211, region: 'strapis' },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: { apiKey: 'dummyApiKey', genericPage: false, genericScreen: false },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.prod2.kustomerapp.com/v1/tracking/identityEvent',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ identity: { externalId: 'user@doe' },
+ event: {
+ name: 'Tracking-Weekender',
+ sessionId: '63nsa22',
+ trackingId: 'sahetwiac',
+ meta: { YearServicedNum: 211, region: 'strapis' },
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ baseEndpoint: 'https://api.prod2.kustomerapp.com',
+ apiKey: 'dummyApiKey',
+ genericPage: false,
+ genericScreen: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/lambda/router/data.ts b/test/integrations/destinations/lambda/router/data.ts
index 37b13e4d2a4..cba30e09747 100644
--- a/test/integrations/destinations/lambda/router/data.ts
+++ b/test/integrations/destinations/lambda/router/data.ts
@@ -8115,9 +8115,7 @@ export const data = [
],
trait1: 'new-val',
},
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
},
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: 'c864b4cd-8f07-4922-b3d0-82ef04c987d3',
@@ -16532,9 +16530,7 @@ export const data = [
],
trait1: 'new-val',
},
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
},
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: 'c864b4cd-8f07-4922-b3d0-82ef04c987d3',
@@ -16655,12 +16651,7 @@ export const data = [
event: 'Product Purchased new',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '9f8fb785-c720-4381-a009-bf22a13f4ced',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -20622,12 +20613,7 @@ export const data = [
event: 'Product Purchased new',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '9f8fb785-c720-4381-a009-bf22a13f4ced',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -24863,19 +24849,11 @@ export const data = [
type: 'page',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '5f58d1f7-cbd6-4bff-8571-9933be7210b1',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- path: '/',
- title: 'Home',
- },
+ properties: { path: '/', title: 'Home' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -24906,19 +24884,11 @@ export const data = [
type: 'page',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '5f58d1f7-cbd6-4bff-8571-9933be7210b1',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- path: '/',
- title: 'Home',
- },
+ properties: { path: '/', title: 'Home' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -25035,18 +25005,11 @@ export const data = [
type: 'screen',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '1b8ee4c3-ffad-4457-b453-31b32da1dfea',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- prop1: '5',
- },
+ properties: { prop1: '5' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -25077,18 +25040,11 @@ export const data = [
type: 'screen',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '1b8ee4c3-ffad-4457-b453-31b32da1dfea',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- prop1: '5',
- },
+ properties: { prop1: '5' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -25203,20 +25159,12 @@ export const data = [
message: {
type: 'group',
sentAt: '2022-08-18T08:43:15.539+05:30',
- traits: {
- name: 'Company',
- industry: 'Industry',
- employees: 123,
- },
+ traits: { name: 'Company', industry: 'Industry', employees: 123 },
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
groupId: 'group1',
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
@@ -25249,20 +25197,12 @@ export const data = [
EventPayload: {
type: 'group',
sentAt: '2022-08-18T08:43:15.539+05:30',
- traits: {
- name: 'Company',
- industry: 'Industry',
- employees: 123,
- },
+ traits: { name: 'Company', industry: 'Industry', employees: 123 },
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
groupId: 'group1',
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
@@ -25384,12 +25324,8 @@ export const data = [
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
messageId: '3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d',
@@ -25425,12 +25361,8 @@ export const data = [
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
messageId: '3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d',
@@ -25560,11 +25492,7 @@ export const data = [
batchedRequest: {
payload:
'[{"type":"track","event":"Product Purchased new","sentAt":"2022-08-18T08:43:15.539+05:30","userId":"identified user id","context":{"ip":"14.5.67.21","library":{"name":"http"}},"rudderId":"daf823fb-e8d3-413a-8313-d34cd756f968","messageId":"9f8fb785-c720-4381-a009-bf22a13f4ced","timestamp":"2020-02-02T00:23:09.544Z","properties":{"data":[{"id":6104546,"url":"https://api.github.com/repos/mralexgray/-REPONAME","fork":false,"name":"-REPONAME","size":48,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/-REPONAME.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk2MTA0NTQ2","private":false,"ssh_url":"git@github.com:mralexgray/-REPONAME.git","svn_url":"https://github.com/mralexgray/-REPONAME","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/-REPONAME","keys_url":"https://api.github.com/repos/mralexgray/-REPONAME/keys{/key_id}","language":null,"tags_url":"https://api.github.com/repos/mralexgray/-REPONAME/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/-REPONAME/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/-REPONAME.git","forks_url":"https://api.github.com/repos/mralexgray/-REPONAME/forks","full_name":"mralexgray/-REPONAME","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/-REPONAME/hooks","pulls_url":"https://api.github.com/repos/mralexgray/-REPONAME/pulls{/number}","pushed_at":"2012-10-06T16:37:39Z","teams_url":"https://api.github.com/repos/mralexgray/-REPONAME/teams","trees_url":"https://api.github.com/repos/mralexgray/-REPONAME/git/trees{/sha}","created_at":"2012-10-06T16:37:39Z","events_url":"https://api.github.com/repos/mralexgray/-REPONAME/events","has_issues":true,"issues_url":"https://api.github.com/repos/mralexgray/-REPONAME/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/-REPONAME/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/-REPONAME/merges","mirror_url":null,"updated_at":"2013-01-12T13:39:30Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/-REPONAME/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/-REPONAME/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/-REPONAME/compare/{base}...{head}","description":null,"forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/-REPONAME/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/-REPONAME/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/-REPONAME/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/-REPONAME/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/-REPONAME/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/-REPONAME/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/-REPONAME/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/-REPONAME/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/-REPONAME/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/-REPONAME/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/-REPONAME/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/-REPONAME/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/-REPONAME/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/-REPONAME/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/-REPONAME/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/-REPONAME/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/-REPONAME/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/-REPONAME/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/-REPONAME/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/-REPONAME/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/-REPONAME/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":104510411,"url":"https://api.github.com/repos/mralexgray/...","fork":true,"name":"...","size":113,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/....git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnkxMDQ1MTA0MTE=","private":false,"ssh_url":"git@github.com:mralexgray/....git","svn_url":"https://github.com/mralexgray/...","archived":false,"disabled":false,"has_wiki":false,"homepage":"https://driesvints.com/blog/getting-started-with-dotfiles","html_url":"https://github.com/mralexgray/...","keys_url":"https://api.github.com/repos/mralexgray/.../keys{/key_id}","language":"Shell","tags_url":"https://api.github.com/repos/mralexgray/.../tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/.../git/blobs{/sha}","clone_url":"https://github.com/mralexgray/....git","forks_url":"https://api.github.com/repos/mralexgray/.../forks","full_name":"mralexgray/...","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/.../hooks","pulls_url":"https://api.github.com/repos/mralexgray/.../pulls{/number}","pushed_at":"2017-09-15T08:27:32Z","teams_url":"https://api.github.com/repos/mralexgray/.../teams","trees_url":"https://api.github.com/repos/mralexgray/.../git/trees{/sha}","created_at":"2017-09-22T19:19:42Z","events_url":"https://api.github.com/repos/mralexgray/.../events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/.../issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/.../labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/.../merges","mirror_url":null,"updated_at":"2017-09-22T19:20:22Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/.../{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/.../commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/.../compare/{base}...{head}","description":":computer: Public repo for my personal dotfiles.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/.../branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/.../comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/.../contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/.../git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/.../git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/.../releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/.../statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/.../assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/.../downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/.../languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/.../milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/.../stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/.../deployments","git_commits_url":"https://api.github.com/repos/mralexgray/.../git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/.../subscribers","contributors_url":"https://api.github.com/repos/mralexgray/.../contributors","issue_events_url":"https://api.github.com/repos/mralexgray/.../issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/.../subscription","collaborators_url":"https://api.github.com/repos/mralexgray/.../collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/.../issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/.../notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":58656723,"url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol","fork":true,"name":"2200087-Serial-Protocol","size":41,"forks":1,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/2200087-Serial-Protocol.git","license":{"key":"gpl-2.0","url":"https://api.github.com/licenses/gpl-2.0","name":"GNU General Public License v2.0","node_id":"MDc6TGljZW5zZTg=","spdx_id":"GPL-2.0"},"node_id":"MDEwOlJlcG9zaXRvcnk1ODY1NjcyMw==","private":false,"ssh_url":"git@github.com:mralexgray/2200087-Serial-Protocol.git","svn_url":"https://github.com/mralexgray/2200087-Serial-Protocol","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://daviddworken.com","html_url":"https://github.com/mralexgray/2200087-Serial-Protocol","keys_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/keys{/key_id}","language":"Python","tags_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/2200087-Serial-Protocol.git","forks_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/forks","full_name":"mralexgray/2200087-Serial-Protocol","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/hooks","pulls_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/pulls{/number}","pushed_at":"2016-05-12T16:07:24Z","teams_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/teams","trees_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/trees{/sha}","created_at":"2016-05-12T16:05:28Z","events_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/merges","mirror_url":null,"updated_at":"2016-05-12T16:05:30Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/compare/{base}...{head}","description":"A reverse engineered protocol description and accompanying code for Radioshack\'s 2200087 multimeter","forks_count":1,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/2200087-Serial-Protocol/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":13121042,"url":"https://api.github.com/repos/mralexgray/ace","fork":true,"name":"ace","size":21080,"forks":1,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/ace.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkxMzEyMTA0Mg==","private":false,"ssh_url":"git@github.com:mralexgray/ace.git","svn_url":"https://github.com/mralexgray/ace","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://ace.c9.io","html_url":"https://github.com/mralexgray/ace","keys_url":"https://api.github.com/repos/mralexgray/ace/keys{/key_id}","language":"JavaScript","tags_url":"https://api.github.com/repos/mralexgray/ace/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/ace/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/ace.git","forks_url":"https://api.github.com/repos/mralexgray/ace/forks","full_name":"mralexgray/ace","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/ace/hooks","pulls_url":"https://api.github.com/repos/mralexgray/ace/pulls{/number}","pushed_at":"2013-10-26T12:34:48Z","teams_url":"https://api.github.com/repos/mralexgray/ace/teams","trees_url":"https://api.github.com/repos/mralexgray/ace/git/trees{/sha}","created_at":"2013-09-26T11:58:10Z","events_url":"https://api.github.com/repos/mralexgray/ace/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/ace/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/ace/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/ace/merges","mirror_url":null,"updated_at":"2013-10-26T12:34:49Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/ace/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/ace/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/ace/compare/{base}...{head}","description":"Ace (Ajax.org Cloud9 Editor)","forks_count":1,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/ace/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/ace/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/ace/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/ace/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/ace/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/ace/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/ace/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/ace/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/ace/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/ace/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/ace/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/ace/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/ace/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/ace/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/ace/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/ace/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/ace/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/ace/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/ace/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/ace/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/ace/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":10791045,"url":"https://api.github.com/repos/mralexgray/ACEView","fork":true,"name":"ACEView","size":1733,"forks":1,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/ACEView.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkxMDc5MTA0NQ==","private":false,"ssh_url":"git@github.com:mralexgray/ACEView.git","svn_url":"https://github.com/mralexgray/ACEView","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/ACEView","keys_url":"https://api.github.com/repos/mralexgray/ACEView/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/ACEView/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/ACEView/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/ACEView.git","forks_url":"https://api.github.com/repos/mralexgray/ACEView/forks","full_name":"mralexgray/ACEView","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/ACEView/hooks","pulls_url":"https://api.github.com/repos/mralexgray/ACEView/pulls{/number}","pushed_at":"2014-05-09T01:36:23Z","teams_url":"https://api.github.com/repos/mralexgray/ACEView/teams","trees_url":"https://api.github.com/repos/mralexgray/ACEView/git/trees{/sha}","created_at":"2013-06-19T12:15:04Z","events_url":"https://api.github.com/repos/mralexgray/ACEView/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/ACEView/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/ACEView/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/ACEView/merges","mirror_url":null,"updated_at":"2015-11-24T01:14:10Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/ACEView/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/ACEView/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/ACEView/compare/{base}...{head}","description":"Use the wonderful ACE editor in your Cocoa applications","forks_count":1,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/ACEView/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/ACEView/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/ACEView/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/ACEView/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/ACEView/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/ACEView/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/ACEView/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/ACEView/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/ACEView/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/ACEView/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/ACEView/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/ACEView/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/ACEView/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/ACEView/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/ACEView/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/ACEView/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/ACEView/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/ACEView/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/ACEView/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/ACEView/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/ACEView/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":13623648,"url":"https://api.github.com/repos/mralexgray/ActiveLog","fork":true,"name":"ActiveLog","size":60,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/ActiveLog.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkxMzYyMzY0OA==","private":false,"ssh_url":"git@github.com:mralexgray/ActiveLog.git","svn_url":"https://github.com/mralexgray/ActiveLog","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://deepitpro.com/en/articles/ActiveLog/info/","html_url":"https://github.com/mralexgray/ActiveLog","keys_url":"https://api.github.com/repos/mralexgray/ActiveLog/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/ActiveLog/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/ActiveLog/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/ActiveLog.git","forks_url":"https://api.github.com/repos/mralexgray/ActiveLog/forks","full_name":"mralexgray/ActiveLog","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/ActiveLog/hooks","pulls_url":"https://api.github.com/repos/mralexgray/ActiveLog/pulls{/number}","pushed_at":"2011-07-03T06:28:59Z","teams_url":"https://api.github.com/repos/mralexgray/ActiveLog/teams","trees_url":"https://api.github.com/repos/mralexgray/ActiveLog/git/trees{/sha}","created_at":"2013-10-16T15:52:37Z","events_url":"https://api.github.com/repos/mralexgray/ActiveLog/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/ActiveLog/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/ActiveLog/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/ActiveLog/merges","mirror_url":null,"updated_at":"2013-10-16T15:52:37Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/ActiveLog/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/ActiveLog/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/ActiveLog/compare/{base}...{head}","description":"Shut up all logs with active filter.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/ActiveLog/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/ActiveLog/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/ActiveLog/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/ActiveLog/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/ActiveLog/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/ActiveLog/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/ActiveLog/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/ActiveLog/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/ActiveLog/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/ActiveLog/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/ActiveLog/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/ActiveLog/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/ActiveLog/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/ActiveLog/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/ActiveLog/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/ActiveLog/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/ActiveLog/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/ActiveLog/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/ActiveLog/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/ActiveLog/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/ActiveLog/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":9716210,"url":"https://api.github.com/repos/mralexgray/adium","fork":false,"name":"adium","size":277719,"forks":37,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/adium.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnk5NzE2MjEw","private":false,"ssh_url":"git@github.com:mralexgray/adium.git","svn_url":"https://github.com/mralexgray/adium","archived":false,"disabled":false,"has_wiki":false,"homepage":null,"html_url":"https://github.com/mralexgray/adium","keys_url":"https://api.github.com/repos/mralexgray/adium/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/adium/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/adium/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/adium.git","forks_url":"https://api.github.com/repos/mralexgray/adium/forks","full_name":"mralexgray/adium","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/adium/hooks","pulls_url":"https://api.github.com/repos/mralexgray/adium/pulls{/number}","pushed_at":"2013-04-26T16:43:53Z","teams_url":"https://api.github.com/repos/mralexgray/adium/teams","trees_url":"https://api.github.com/repos/mralexgray/adium/git/trees{/sha}","created_at":"2013-04-27T14:59:33Z","events_url":"https://api.github.com/repos/mralexgray/adium/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/adium/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/adium/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/adium/merges","mirror_url":null,"updated_at":"2019-12-11T06:51:45Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/adium/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/adium/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/adium/compare/{base}...{head}","description":"Official mirror of hg.adium.im","forks_count":37,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/adium/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/adium/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/adium/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/adium/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/adium/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/adium/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/adium/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/adium/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/adium/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/adium/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/adium/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/adium/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/adium/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/adium/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/adium/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/adium/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/adium/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/adium/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/adium/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/adium/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/adium/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":12752329,"url":"https://api.github.com/repos/mralexgray/ADLivelyTableView","fork":true,"name":"ADLivelyTableView","size":73,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/ADLivelyTableView.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkxMjc1MjMyOQ==","private":false,"ssh_url":"git@github.com:mralexgray/ADLivelyTableView.git","svn_url":"https://github.com/mralexgray/ADLivelyTableView","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://applidium.com/en/news/lively_uitableview/","html_url":"https://github.com/mralexgray/ADLivelyTableView","keys_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/ADLivelyTableView.git","forks_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/forks","full_name":"mralexgray/ADLivelyTableView","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/hooks","pulls_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/pulls{/number}","pushed_at":"2012-05-10T10:40:15Z","teams_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/teams","trees_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/trees{/sha}","created_at":"2013-09-11T09:18:01Z","events_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/merges","mirror_url":null,"updated_at":"2013-09-11T09:18:03Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/compare/{base}...{head}","description":"Lively UITableView","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/ADLivelyTableView/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":5697379,"url":"https://api.github.com/repos/mralexgray/AFIncrementalStore","fork":true,"name":"AFIncrementalStore","size":139,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AFIncrementalStore.git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnk1Njk3Mzc5","private":false,"ssh_url":"git@github.com:mralexgray/AFIncrementalStore.git","svn_url":"https://github.com/mralexgray/AFIncrementalStore","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/AFIncrementalStore","keys_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AFIncrementalStore.git","forks_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/forks","full_name":"mralexgray/AFIncrementalStore","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/pulls{/number}","pushed_at":"2012-09-01T22:46:25Z","teams_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/teams","trees_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/trees{/sha}","created_at":"2012-09-06T04:20:33Z","events_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/merges","mirror_url":null,"updated_at":"2013-01-12T03:15:29Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/compare/{base}...{head}","description":"Core Data Persistence with AFNetworking, Done Right","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AFIncrementalStore/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":6969621,"url":"https://api.github.com/repos/mralexgray/AFNetworking","fork":true,"name":"AFNetworking","size":4341,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AFNetworking.git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnk2OTY5NjIx","private":false,"ssh_url":"git@github.com:mralexgray/AFNetworking.git","svn_url":"https://github.com/mralexgray/AFNetworking","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://afnetworking.com","html_url":"https://github.com/mralexgray/AFNetworking","keys_url":"https://api.github.com/repos/mralexgray/AFNetworking/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AFNetworking/tags","watchers":2,"blobs_url":"https://api.github.com/repos/mralexgray/AFNetworking/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AFNetworking.git","forks_url":"https://api.github.com/repos/mralexgray/AFNetworking/forks","full_name":"mralexgray/AFNetworking","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AFNetworking/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AFNetworking/pulls{/number}","pushed_at":"2014-01-24T07:14:32Z","teams_url":"https://api.github.com/repos/mralexgray/AFNetworking/teams","trees_url":"https://api.github.com/repos/mralexgray/AFNetworking/git/trees{/sha}","created_at":"2012-12-02T17:00:04Z","events_url":"https://api.github.com/repos/mralexgray/AFNetworking/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AFNetworking/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AFNetworking/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AFNetworking/merges","mirror_url":null,"updated_at":"2014-01-24T07:14:33Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AFNetworking/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AFNetworking/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AFNetworking/compare/{base}...{head}","description":"A delightful iOS and OS X networking framework","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AFNetworking/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AFNetworking/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AFNetworking/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AFNetworking/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AFNetworking/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AFNetworking/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AFNetworking/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AFNetworking/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AFNetworking/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AFNetworking/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AFNetworking/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AFNetworking/stargazers","watchers_count":2,"deployments_url":"https://api.github.com/repos/mralexgray/AFNetworking/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AFNetworking/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AFNetworking/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AFNetworking/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AFNetworking/issues/events{/number}","stargazers_count":2,"subscription_url":"https://api.github.com/repos/mralexgray/AFNetworking/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AFNetworking/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AFNetworking/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AFNetworking/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":9485541,"url":"https://api.github.com/repos/mralexgray/AGNSSplitView","fork":true,"name":"AGNSSplitView","size":68,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AGNSSplitView.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk5NDg1NTQx","private":false,"ssh_url":"git@github.com:mralexgray/AGNSSplitView.git","svn_url":"https://github.com/mralexgray/AGNSSplitView","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/AGNSSplitView","keys_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AGNSSplitView.git","forks_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/forks","full_name":"mralexgray/AGNSSplitView","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/pulls{/number}","pushed_at":"2013-02-26T00:32:32Z","teams_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/teams","trees_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/git/trees{/sha}","created_at":"2013-04-17T00:10:13Z","events_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/merges","mirror_url":null,"updated_at":"2013-04-17T00:10:13Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/compare/{base}...{head}","description":"Simple NSSplitView additions.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AGNSSplitView/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":12767784,"url":"https://api.github.com/repos/mralexgray/AGScopeBar","fork":true,"name":"AGScopeBar","size":64,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AGScopeBar.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkxMjc2Nzc4NA==","private":false,"ssh_url":"git@github.com:mralexgray/AGScopeBar.git","svn_url":"https://github.com/mralexgray/AGScopeBar","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/AGScopeBar","keys_url":"https://api.github.com/repos/mralexgray/AGScopeBar/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AGScopeBar/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AGScopeBar/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AGScopeBar.git","forks_url":"https://api.github.com/repos/mralexgray/AGScopeBar/forks","full_name":"mralexgray/AGScopeBar","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AGScopeBar/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AGScopeBar/pulls{/number}","pushed_at":"2013-05-07T03:35:29Z","teams_url":"https://api.github.com/repos/mralexgray/AGScopeBar/teams","trees_url":"https://api.github.com/repos/mralexgray/AGScopeBar/git/trees{/sha}","created_at":"2013-09-11T21:06:54Z","events_url":"https://api.github.com/repos/mralexgray/AGScopeBar/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AGScopeBar/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AGScopeBar/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AGScopeBar/merges","mirror_url":null,"updated_at":"2013-09-11T21:06:54Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AGScopeBar/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AGScopeBar/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AGScopeBar/compare/{base}...{head}","description":"Custom scope bar implementation for Cocoa","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AGScopeBar/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AGScopeBar/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AGScopeBar/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AGScopeBar/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AGScopeBar/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AGScopeBar/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AGScopeBar/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AGScopeBar/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AGScopeBar/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AGScopeBar/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AGScopeBar/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AGScopeBar/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AGScopeBar/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AGScopeBar/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AGScopeBar/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AGScopeBar/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AGScopeBar/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AGScopeBar/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AGScopeBar/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AGScopeBar/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AGScopeBar/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":31829499,"url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin","fork":true,"name":"agvtool-xcode-plugin","size":102,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/agvtool-xcode-plugin.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkzMTgyOTQ5OQ==","private":false,"ssh_url":"git@github.com:mralexgray/agvtool-xcode-plugin.git","svn_url":"https://github.com/mralexgray/agvtool-xcode-plugin","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/agvtool-xcode-plugin","keys_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/agvtool-xcode-plugin.git","forks_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/forks","full_name":"mralexgray/agvtool-xcode-plugin","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/hooks","pulls_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/pulls{/number}","pushed_at":"2015-03-08T00:04:31Z","teams_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/teams","trees_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/trees{/sha}","created_at":"2015-03-07T22:15:38Z","events_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/merges","mirror_url":null,"updated_at":"2015-03-07T22:15:41Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/compare/{base}...{head}","description":"this is a plugin wrapper for agvtool for xcode.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/agvtool-xcode-plugin/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":9227846,"url":"https://api.github.com/repos/mralexgray/AHContentBrowser","fork":true,"name":"AHContentBrowser","size":223,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AHContentBrowser.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk5MjI3ODQ2","private":false,"ssh_url":"git@github.com:mralexgray/AHContentBrowser.git","svn_url":"https://github.com/mralexgray/AHContentBrowser","archived":false,"disabled":false,"has_wiki":true,"homepage":"","html_url":"https://github.com/mralexgray/AHContentBrowser","keys_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AHContentBrowser.git","forks_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/forks","full_name":"mralexgray/AHContentBrowser","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/pulls{/number}","pushed_at":"2013-03-13T17:38:23Z","teams_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/teams","trees_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/git/trees{/sha}","created_at":"2013-04-04T20:56:16Z","events_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/merges","mirror_url":null,"updated_at":"2015-10-22T05:00:24Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/compare/{base}...{head}","description":"A Mac only webview that loads a fast readable version of the website if available.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AHContentBrowser/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":37430328,"url":"https://api.github.com/repos/mralexgray/AHLaunchCtl","fork":true,"name":"AHLaunchCtl","size":592,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AHLaunchCtl.git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnkzNzQzMDMyOA==","private":false,"ssh_url":"git@github.com:mralexgray/AHLaunchCtl.git","svn_url":"https://github.com/mralexgray/AHLaunchCtl","archived":false,"disabled":false,"has_wiki":true,"homepage":"","html_url":"https://github.com/mralexgray/AHLaunchCtl","keys_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AHLaunchCtl.git","forks_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/forks","full_name":"mralexgray/AHLaunchCtl","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/pulls{/number}","pushed_at":"2015-05-26T18:50:48Z","teams_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/teams","trees_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/trees{/sha}","created_at":"2015-06-14T21:31:03Z","events_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/merges","mirror_url":null,"updated_at":"2015-06-14T21:31:04Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/compare/{base}...{head}","description":"LaunchD Framework for Cocoa Apps","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AHLaunchCtl/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":9167473,"url":"https://api.github.com/repos/mralexgray/AHLayout","fork":true,"name":"AHLayout","size":359,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AHLayout.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk5MTY3NDcz","private":false,"ssh_url":"git@github.com:mralexgray/AHLayout.git","svn_url":"https://github.com/mralexgray/AHLayout","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/AHLayout","keys_url":"https://api.github.com/repos/mralexgray/AHLayout/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AHLayout/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AHLayout/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AHLayout.git","forks_url":"https://api.github.com/repos/mralexgray/AHLayout/forks","full_name":"mralexgray/AHLayout","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AHLayout/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AHLayout/pulls{/number}","pushed_at":"2013-07-08T02:31:14Z","teams_url":"https://api.github.com/repos/mralexgray/AHLayout/teams","trees_url":"https://api.github.com/repos/mralexgray/AHLayout/git/trees{/sha}","created_at":"2013-04-02T10:10:30Z","events_url":"https://api.github.com/repos/mralexgray/AHLayout/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AHLayout/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AHLayout/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AHLayout/merges","mirror_url":null,"updated_at":"2013-07-08T02:31:17Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AHLayout/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AHLayout/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AHLayout/compare/{base}...{head}","description":"AHLayout","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AHLayout/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AHLayout/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AHLayout/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AHLayout/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AHLayout/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AHLayout/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AHLayout/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AHLayout/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AHLayout/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AHLayout/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AHLayout/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AHLayout/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AHLayout/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AHLayout/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AHLayout/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AHLayout/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AHLayout/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AHLayout/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AHLayout/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AHLayout/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AHLayout/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":18450201,"url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework","fork":true,"name":"Airmail-Plug-In-Framework","size":888,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Airmail-Plug-In-Framework.git","license":{"key":"gpl-2.0","url":"https://api.github.com/licenses/gpl-2.0","name":"GNU General Public License v2.0","node_id":"MDc6TGljZW5zZTg=","spdx_id":"GPL-2.0"},"node_id":"MDEwOlJlcG9zaXRvcnkxODQ1MDIwMQ==","private":false,"ssh_url":"git@github.com:mralexgray/Airmail-Plug-In-Framework.git","svn_url":"https://github.com/mralexgray/Airmail-Plug-In-Framework","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/Airmail-Plug-In-Framework","keys_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/keys{/key_id}","language":null,"tags_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Airmail-Plug-In-Framework.git","forks_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/forks","full_name":"mralexgray/Airmail-Plug-In-Framework","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/pulls{/number}","pushed_at":"2014-03-27T15:42:19Z","teams_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/teams","trees_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/trees{/sha}","created_at":"2014-04-04T19:33:54Z","events_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/merges","mirror_url":null,"updated_at":"2014-11-23T19:31:04Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/compare/{base}...{head}","description":null,"forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Airmail-Plug-In-Framework/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":5203219,"url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API","fork":true,"name":"AJS-iTunes-API","size":103,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AJS-iTunes-API.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk1MjAzMjE5","private":false,"ssh_url":"git@github.com:mralexgray/AJS-iTunes-API.git","svn_url":"https://github.com/mralexgray/AJS-iTunes-API","archived":false,"disabled":false,"has_wiki":true,"homepage":"","html_url":"https://github.com/mralexgray/AJS-iTunes-API","keys_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/tags","watchers":2,"blobs_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AJS-iTunes-API.git","forks_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/forks","full_name":"mralexgray/AJS-iTunes-API","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/pulls{/number}","pushed_at":"2011-10-30T22:26:48Z","teams_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/teams","trees_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/trees{/sha}","created_at":"2012-07-27T10:20:58Z","events_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/merges","mirror_url":null,"updated_at":"2013-01-11T11:00:05Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/compare/{base}...{head}","description":"Cocoa wrapper for the iTunes search API - for iOS and Mac OSX projects","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/stargazers","watchers_count":2,"deployments_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/events{/number}","stargazers_count":2,"subscription_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AJS-iTunes-API/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":10093801,"url":"https://api.github.com/repos/mralexgray/Alcatraz","fork":true,"name":"Alcatraz","size":3668,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Alcatraz.git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnkxMDA5MzgwMQ==","private":false,"ssh_url":"git@github.com:mralexgray/Alcatraz.git","svn_url":"https://github.com/mralexgray/Alcatraz","archived":false,"disabled":false,"has_wiki":false,"homepage":"mneorr.github.com/Alcatraz","html_url":"https://github.com/mralexgray/Alcatraz","keys_url":"https://api.github.com/repos/mralexgray/Alcatraz/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/Alcatraz/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Alcatraz/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Alcatraz.git","forks_url":"https://api.github.com/repos/mralexgray/Alcatraz/forks","full_name":"mralexgray/Alcatraz","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Alcatraz/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Alcatraz/pulls{/number}","pushed_at":"2014-03-19T12:50:37Z","teams_url":"https://api.github.com/repos/mralexgray/Alcatraz/teams","trees_url":"https://api.github.com/repos/mralexgray/Alcatraz/git/trees{/sha}","created_at":"2013-05-16T04:41:13Z","events_url":"https://api.github.com/repos/mralexgray/Alcatraz/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Alcatraz/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Alcatraz/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Alcatraz/merges","mirror_url":null,"updated_at":"2014-03-19T20:38:35Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Alcatraz/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Alcatraz/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Alcatraz/compare/{base}...{head}","description":"The most awesome (and only) Xcode package manager!","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Alcatraz/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Alcatraz/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Alcatraz/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Alcatraz/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Alcatraz/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Alcatraz/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Alcatraz/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Alcatraz/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Alcatraz/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Alcatraz/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Alcatraz/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Alcatraz/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Alcatraz/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Alcatraz/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Alcatraz/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Alcatraz/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Alcatraz/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Alcatraz/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Alcatraz/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Alcatraz/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Alcatraz/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":12916552,"url":"https://api.github.com/repos/mralexgray/alcatraz-packages","fork":true,"name":"alcatraz-packages","size":826,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/alcatraz-packages.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkxMjkxNjU1Mg==","private":false,"ssh_url":"git@github.com:mralexgray/alcatraz-packages.git","svn_url":"https://github.com/mralexgray/alcatraz-packages","archived":false,"disabled":false,"has_wiki":true,"homepage":"mneorr.github.com/Alcatraz","html_url":"https://github.com/mralexgray/alcatraz-packages","keys_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/keys{/key_id}","language":"Ruby","tags_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/alcatraz-packages.git","forks_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/forks","full_name":"mralexgray/alcatraz-packages","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/hooks","pulls_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/pulls{/number}","pushed_at":"2015-12-14T16:21:31Z","teams_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/teams","trees_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/git/trees{/sha}","created_at":"2013-09-18T07:15:24Z","events_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/merges","mirror_url":null,"updated_at":"2015-11-10T20:52:30Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/compare/{base}...{head}","description":"Package list repository for Alcatraz","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/alcatraz-packages/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":44278362,"url":"https://api.github.com/repos/mralexgray/alexicons","fork":true,"name":"alexicons","size":257,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/alexicons.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk0NDI3ODM2Mg==","private":false,"ssh_url":"git@github.com:mralexgray/alexicons.git","svn_url":"https://github.com/mralexgray/alexicons","archived":false,"disabled":false,"has_wiki":false,"homepage":null,"html_url":"https://github.com/mralexgray/alexicons","keys_url":"https://api.github.com/repos/mralexgray/alexicons/keys{/key_id}","language":"CoffeeScript","tags_url":"https://api.github.com/repos/mralexgray/alexicons/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/alexicons/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/alexicons.git","forks_url":"https://api.github.com/repos/mralexgray/alexicons/forks","full_name":"mralexgray/alexicons","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/alexicons/hooks","pulls_url":"https://api.github.com/repos/mralexgray/alexicons/pulls{/number}","pushed_at":"2015-10-16T03:57:51Z","teams_url":"https://api.github.com/repos/mralexgray/alexicons/teams","trees_url":"https://api.github.com/repos/mralexgray/alexicons/git/trees{/sha}","created_at":"2015-10-14T21:49:39Z","events_url":"https://api.github.com/repos/mralexgray/alexicons/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/alexicons/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/alexicons/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/alexicons/merges","mirror_url":null,"updated_at":"2015-10-15T06:20:08Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/alexicons/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/alexicons/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/alexicons/compare/{base}...{head}","description":"Get popular cat names","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/alexicons/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/alexicons/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/alexicons/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/alexicons/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/alexicons/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/alexicons/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/alexicons/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/alexicons/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/alexicons/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/alexicons/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/alexicons/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/alexicons/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/alexicons/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/alexicons/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/alexicons/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/alexicons/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/alexicons/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/alexicons/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/alexicons/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/alexicons/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/alexicons/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":10476467,"url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate","fork":true,"name":"Alfred-Google-Translate","size":103,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Alfred-Google-Translate.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkxMDQ3NjQ2Nw==","private":false,"ssh_url":"git@github.com:mralexgray/Alfred-Google-Translate.git","svn_url":"https://github.com/mralexgray/Alfred-Google-Translate","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/Alfred-Google-Translate","keys_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/keys{/key_id}","language":"Shell","tags_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Alfred-Google-Translate.git","forks_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/forks","full_name":"mralexgray/Alfred-Google-Translate","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/pulls{/number}","pushed_at":"2013-01-12T19:39:03Z","teams_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/teams","trees_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/trees{/sha}","created_at":"2013-06-04T10:45:10Z","events_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/merges","mirror_url":null,"updated_at":"2013-06-04T10:45:10Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/compare/{base}...{head}","description":"Extension for Alfred that will do a Google translate for you","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Alfred-Google-Translate/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":5524019,"url":"https://api.github.com/repos/mralexgray/Amber","fork":false,"name":"Amber","size":48,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Amber.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk1NTI0MDE5","private":false,"ssh_url":"git@github.com:mralexgray/Amber.git","svn_url":"https://github.com/mralexgray/Amber","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/Amber","keys_url":"https://api.github.com/repos/mralexgray/Amber/keys{/key_id}","language":null,"tags_url":"https://api.github.com/repos/mralexgray/Amber/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Amber/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Amber.git","forks_url":"https://api.github.com/repos/mralexgray/Amber/forks","full_name":"mralexgray/Amber","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Amber/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Amber/pulls{/number}","pushed_at":"2012-08-23T10:38:25Z","teams_url":"https://api.github.com/repos/mralexgray/Amber/teams","trees_url":"https://api.github.com/repos/mralexgray/Amber/git/trees{/sha}","created_at":"2012-08-23T10:38:24Z","events_url":"https://api.github.com/repos/mralexgray/Amber/events","has_issues":true,"issues_url":"https://api.github.com/repos/mralexgray/Amber/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Amber/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Amber/merges","mirror_url":null,"updated_at":"2013-01-11T22:25:35Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Amber/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Amber/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Amber/compare/{base}...{head}","description":"Fork of the difficult-to-deal-with Amber.framework","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Amber/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Amber/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Amber/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Amber/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Amber/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Amber/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Amber/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Amber/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Amber/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Amber/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Amber/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Amber/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Amber/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Amber/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Amber/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Amber/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Amber/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Amber/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Amber/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Amber/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Amber/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":10809060,"url":"https://api.github.com/repos/mralexgray/Amethyst","fork":true,"name":"Amethyst","size":12623,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Amethyst.git","license":{"key":"mit","url":"https://api.github.com/licenses/mit","name":"MIT License","node_id":"MDc6TGljZW5zZTEz","spdx_id":"MIT"},"node_id":"MDEwOlJlcG9zaXRvcnkxMDgwOTA2MA==","private":false,"ssh_url":"git@github.com:mralexgray/Amethyst.git","svn_url":"https://github.com/mralexgray/Amethyst","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://ianyh.github.io/Amethyst/","html_url":"https://github.com/mralexgray/Amethyst","keys_url":"https://api.github.com/repos/mralexgray/Amethyst/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/Amethyst/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Amethyst/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Amethyst.git","forks_url":"https://api.github.com/repos/mralexgray/Amethyst/forks","full_name":"mralexgray/Amethyst","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Amethyst/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Amethyst/pulls{/number}","pushed_at":"2013-06-18T02:54:11Z","teams_url":"https://api.github.com/repos/mralexgray/Amethyst/teams","trees_url":"https://api.github.com/repos/mralexgray/Amethyst/git/trees{/sha}","created_at":"2013-06-20T00:34:22Z","events_url":"https://api.github.com/repos/mralexgray/Amethyst/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Amethyst/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Amethyst/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Amethyst/merges","mirror_url":null,"updated_at":"2013-06-20T00:34:22Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Amethyst/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Amethyst/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Amethyst/compare/{base}...{head}","description":"Tiling window manager for OS X.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Amethyst/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Amethyst/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Amethyst/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Amethyst/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Amethyst/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Amethyst/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Amethyst/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Amethyst/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Amethyst/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Amethyst/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Amethyst/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Amethyst/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Amethyst/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Amethyst/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Amethyst/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Amethyst/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Amethyst/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Amethyst/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Amethyst/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Amethyst/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Amethyst/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":3684286,"url":"https://api.github.com/repos/mralexgray/Animated-Paths","fork":true,"name":"Animated-Paths","size":411,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Animated-Paths.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkzNjg0Mjg2","private":false,"ssh_url":"git@github.com:mralexgray/Animated-Paths.git","svn_url":"https://github.com/mralexgray/Animated-Paths","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://oleb.net/blog/2010/12/animating-drawing-of-cgpath-with-cashapelayer/","html_url":"https://github.com/mralexgray/Animated-Paths","keys_url":"https://api.github.com/repos/mralexgray/Animated-Paths/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/Animated-Paths/tags","watchers":2,"blobs_url":"https://api.github.com/repos/mralexgray/Animated-Paths/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Animated-Paths.git","forks_url":"https://api.github.com/repos/mralexgray/Animated-Paths/forks","full_name":"mralexgray/Animated-Paths","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Animated-Paths/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Animated-Paths/pulls{/number}","pushed_at":"2010-12-30T20:56:51Z","teams_url":"https://api.github.com/repos/mralexgray/Animated-Paths/teams","trees_url":"https://api.github.com/repos/mralexgray/Animated-Paths/git/trees{/sha}","created_at":"2012-03-11T02:56:38Z","events_url":"https://api.github.com/repos/mralexgray/Animated-Paths/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Animated-Paths/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Animated-Paths/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Animated-Paths/merges","mirror_url":null,"updated_at":"2013-01-08T04:12:21Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Animated-Paths/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Animated-Paths/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Animated-Paths/compare/{base}...{head}","description":"Demo project: Animating the drawing of a CGPath with CAShapeLayer.strokeEnd","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Animated-Paths/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Animated-Paths/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Animated-Paths/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Animated-Paths/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Animated-Paths/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Animated-Paths/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Animated-Paths/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Animated-Paths/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Animated-Paths/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Animated-Paths/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Animated-Paths/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Animated-Paths/stargazers","watchers_count":2,"deployments_url":"https://api.github.com/repos/mralexgray/Animated-Paths/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Animated-Paths/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Animated-Paths/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Animated-Paths/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Animated-Paths/issues/events{/number}","stargazers_count":2,"subscription_url":"https://api.github.com/repos/mralexgray/Animated-Paths/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Animated-Paths/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Animated-Paths/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Animated-Paths/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":16662874,"url":"https://api.github.com/repos/mralexgray/AnsiLove.framework","fork":true,"name":"AnsiLove.framework","size":3780,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AnsiLove.framework.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkxNjY2Mjg3NA==","private":false,"ssh_url":"git@github.com:mralexgray/AnsiLove.framework.git","svn_url":"https://github.com/mralexgray/AnsiLove.framework","archived":false,"disabled":false,"has_wiki":false,"homepage":"http://byteproject.net","html_url":"https://github.com/mralexgray/AnsiLove.framework","keys_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/keys{/key_id}","language":"M","tags_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AnsiLove.framework.git","forks_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/forks","full_name":"mralexgray/AnsiLove.framework","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/pulls{/number}","pushed_at":"2013-10-04T14:08:38Z","teams_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/teams","trees_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/trees{/sha}","created_at":"2014-02-09T08:30:27Z","events_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/merges","mirror_url":null,"updated_at":"2015-01-13T20:41:46Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/compare/{base}...{head}","description":"Cocoa Framework for rendering ANSi / ASCII art","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AnsiLove.framework/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":5189563,"url":"https://api.github.com/repos/mralexgray/ANTrackBar","fork":true,"name":"ANTrackBar","size":94,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/ANTrackBar.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnk1MTg5NTYz","private":false,"ssh_url":"git@github.com:mralexgray/ANTrackBar.git","svn_url":"https://github.com/mralexgray/ANTrackBar","archived":false,"disabled":false,"has_wiki":true,"homepage":"","html_url":"https://github.com/mralexgray/ANTrackBar","keys_url":"https://api.github.com/repos/mralexgray/ANTrackBar/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/ANTrackBar/tags","watchers":2,"blobs_url":"https://api.github.com/repos/mralexgray/ANTrackBar/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/ANTrackBar.git","forks_url":"https://api.github.com/repos/mralexgray/ANTrackBar/forks","full_name":"mralexgray/ANTrackBar","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/ANTrackBar/hooks","pulls_url":"https://api.github.com/repos/mralexgray/ANTrackBar/pulls{/number}","pushed_at":"2012-03-09T01:40:02Z","teams_url":"https://api.github.com/repos/mralexgray/ANTrackBar/teams","trees_url":"https://api.github.com/repos/mralexgray/ANTrackBar/git/trees{/sha}","created_at":"2012-07-26T08:17:22Z","events_url":"https://api.github.com/repos/mralexgray/ANTrackBar/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/ANTrackBar/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/ANTrackBar/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/ANTrackBar/merges","mirror_url":null,"updated_at":"2013-01-11T10:29:56Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/ANTrackBar/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/ANTrackBar/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/ANTrackBar/compare/{base}...{head}","description":"An easy-to-use Cocoa seek bar with a pleasing appearance","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/ANTrackBar/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/ANTrackBar/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/ANTrackBar/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/ANTrackBar/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/ANTrackBar/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/ANTrackBar/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/ANTrackBar/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/ANTrackBar/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/ANTrackBar/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/ANTrackBar/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/ANTrackBar/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/ANTrackBar/stargazers","watchers_count":2,"deployments_url":"https://api.github.com/repos/mralexgray/ANTrackBar/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/ANTrackBar/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/ANTrackBar/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/ANTrackBar/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/ANTrackBar/issues/events{/number}","stargazers_count":2,"subscription_url":"https://api.github.com/repos/mralexgray/ANTrackBar/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/ANTrackBar/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/ANTrackBar/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/ANTrackBar/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":16240152,"url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C","fork":true,"name":"AOP-in-Objective-C","size":340,"forks":1,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/AOP-in-Objective-C.git","license":null,"node_id":"MDEwOlJlcG9zaXRvcnkxNjI0MDE1Mg==","private":false,"ssh_url":"git@github.com:mralexgray/AOP-in-Objective-C.git","svn_url":"https://github.com/mralexgray/AOP-in-Objective-C","archived":false,"disabled":false,"has_wiki":true,"homepage":"http://innoli.hu/en/opensource/","html_url":"https://github.com/mralexgray/AOP-in-Objective-C","keys_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/keys{/key_id}","language":"Objective-C","tags_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/AOP-in-Objective-C.git","forks_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/forks","full_name":"mralexgray/AOP-in-Objective-C","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/hooks","pulls_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/pulls{/number}","pushed_at":"2014-02-12T16:23:20Z","teams_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/teams","trees_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/trees{/sha}","created_at":"2014-01-25T21:18:04Z","events_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/merges","mirror_url":null,"updated_at":"2014-06-19T19:38:12Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/compare/{base}...{head}","description":"An NSProxy based library for easily enabling AOP like functionality in Objective-C.","forks_count":1,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/languages","default_branch":"travis-coveralls","milestones_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/AOP-in-Objective-C/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":13141936,"url":"https://api.github.com/repos/mralexgray/Apaxy","fork":true,"name":"Apaxy","size":113,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/Apaxy.git","license":{"key":"unlicense","url":"https://api.github.com/licenses/unlicense","name":"The Unlicense","node_id":"MDc6TGljZW5zZTE1","spdx_id":"Unlicense"},"node_id":"MDEwOlJlcG9zaXRvcnkxMzE0MTkzNg==","private":false,"ssh_url":"git@github.com:mralexgray/Apaxy.git","svn_url":"https://github.com/mralexgray/Apaxy","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/Apaxy","keys_url":"https://api.github.com/repos/mralexgray/Apaxy/keys{/key_id}","language":"CSS","tags_url":"https://api.github.com/repos/mralexgray/Apaxy/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/Apaxy/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/Apaxy.git","forks_url":"https://api.github.com/repos/mralexgray/Apaxy/forks","full_name":"mralexgray/Apaxy","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/Apaxy/hooks","pulls_url":"https://api.github.com/repos/mralexgray/Apaxy/pulls{/number}","pushed_at":"2013-08-02T16:01:32Z","teams_url":"https://api.github.com/repos/mralexgray/Apaxy/teams","trees_url":"https://api.github.com/repos/mralexgray/Apaxy/git/trees{/sha}","created_at":"2013-09-27T05:05:35Z","events_url":"https://api.github.com/repos/mralexgray/Apaxy/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/Apaxy/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/Apaxy/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/Apaxy/merges","mirror_url":null,"updated_at":"2018-02-16T21:40:24Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/Apaxy/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/Apaxy/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/Apaxy/compare/{base}...{head}","description":"A simple, customisable theme for your Apache directory listing.","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/Apaxy/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/Apaxy/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/Apaxy/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/Apaxy/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/Apaxy/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/Apaxy/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/Apaxy/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/Apaxy/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/Apaxy/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/Apaxy/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/Apaxy/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/Apaxy/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/Apaxy/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/Apaxy/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/Apaxy/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/Apaxy/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/Apaxy/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/Apaxy/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/Apaxy/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/Apaxy/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/Apaxy/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false},{"id":20027360,"url":"https://api.github.com/repos/mralexgray/app","fork":true,"name":"app","size":1890,"forks":0,"owner":{"id":262517,"url":"https://api.github.com/users/mralexgray","type":"User","login":"mralexgray","node_id":"MDQ6VXNlcjI2MjUxNw==","html_url":"https://github.com/mralexgray","gists_url":"https://api.github.com/users/mralexgray/gists{/gist_id}","repos_url":"https://api.github.com/users/mralexgray/repos","avatar_url":"https://avatars.githubusercontent.com/u/262517?v=4","events_url":"https://api.github.com/users/mralexgray/events{/privacy}","site_admin":false,"gravatar_id":"","starred_url":"https://api.github.com/users/mralexgray/starred{/owner}{/repo}","followers_url":"https://api.github.com/users/mralexgray/followers","following_url":"https://api.github.com/users/mralexgray/following{/other_user}","organizations_url":"https://api.github.com/users/mralexgray/orgs","subscriptions_url":"https://api.github.com/users/mralexgray/subscriptions","received_events_url":"https://api.github.com/users/mralexgray/received_events"},"topics":[],"git_url":"git://github.com/mralexgray/app.git","license":{"key":"other","url":null,"name":"Other","node_id":"MDc6TGljZW5zZTA=","spdx_id":"NOASSERTION"},"node_id":"MDEwOlJlcG9zaXRvcnkyMDAyNzM2MA==","private":false,"ssh_url":"git@github.com:mralexgray/app.git","svn_url":"https://github.com/mralexgray/app","archived":false,"disabled":false,"has_wiki":true,"homepage":null,"html_url":"https://github.com/mralexgray/app","keys_url":"https://api.github.com/repos/mralexgray/app/keys{/key_id}","language":"JavaScript","tags_url":"https://api.github.com/repos/mralexgray/app/tags","watchers":0,"blobs_url":"https://api.github.com/repos/mralexgray/app/git/blobs{/sha}","clone_url":"https://github.com/mralexgray/app.git","forks_url":"https://api.github.com/repos/mralexgray/app/forks","full_name":"mralexgray/app","has_pages":false,"hooks_url":"https://api.github.com/repos/mralexgray/app/hooks","pulls_url":"https://api.github.com/repos/mralexgray/app/pulls{/number}","pushed_at":"2014-05-20T19:51:38Z","teams_url":"https://api.github.com/repos/mralexgray/app/teams","trees_url":"https://api.github.com/repos/mralexgray/app/git/trees{/sha}","created_at":"2014-05-21T15:54:20Z","events_url":"https://api.github.com/repos/mralexgray/app/events","has_issues":false,"issues_url":"https://api.github.com/repos/mralexgray/app/issues{/number}","labels_url":"https://api.github.com/repos/mralexgray/app/labels{/name}","merges_url":"https://api.github.com/repos/mralexgray/app/merges","mirror_url":null,"updated_at":"2014-05-21T15:54:22Z","visibility":"public","archive_url":"https://api.github.com/repos/mralexgray/app/{archive_format}{/ref}","commits_url":"https://api.github.com/repos/mralexgray/app/commits{/sha}","compare_url":"https://api.github.com/repos/mralexgray/app/compare/{base}...{head}","description":"Instant mobile web app creation","forks_count":0,"is_template":false,"open_issues":0,"branches_url":"https://api.github.com/repos/mralexgray/app/branches{/branch}","comments_url":"https://api.github.com/repos/mralexgray/app/comments{/number}","contents_url":"https://api.github.com/repos/mralexgray/app/contents/{+path}","git_refs_url":"https://api.github.com/repos/mralexgray/app/git/refs{/sha}","git_tags_url":"https://api.github.com/repos/mralexgray/app/git/tags{/sha}","has_projects":true,"releases_url":"https://api.github.com/repos/mralexgray/app/releases{/id}","statuses_url":"https://api.github.com/repos/mralexgray/app/statuses/{sha}","allow_forking":true,"assignees_url":"https://api.github.com/repos/mralexgray/app/assignees{/user}","downloads_url":"https://api.github.com/repos/mralexgray/app/downloads","has_downloads":true,"languages_url":"https://api.github.com/repos/mralexgray/app/languages","default_branch":"master","milestones_url":"https://api.github.com/repos/mralexgray/app/milestones{/number}","stargazers_url":"https://api.github.com/repos/mralexgray/app/stargazers","watchers_count":0,"deployments_url":"https://api.github.com/repos/mralexgray/app/deployments","git_commits_url":"https://api.github.com/repos/mralexgray/app/git/commits{/sha}","subscribers_url":"https://api.github.com/repos/mralexgray/app/subscribers","contributors_url":"https://api.github.com/repos/mralexgray/app/contributors","issue_events_url":"https://api.github.com/repos/mralexgray/app/issues/events{/number}","stargazers_count":0,"subscription_url":"https://api.github.com/repos/mralexgray/app/subscription","collaborators_url":"https://api.github.com/repos/mralexgray/app/collaborators{/collaborator}","issue_comment_url":"https://api.github.com/repos/mralexgray/app/issues/comments{/number}","notifications_url":"https://api.github.com/repos/mralexgray/app/notifications{?since,all,participating}","open_issues_count":0,"web_commit_signoff_required":false}],"name":"Shirt","revenue":4.99},"receivedAt":"2022-08-18T08:43:13.521+05:30","request_ip":"[::1]","anonymousId":"anon-id-new","originalTimestamp":"2022-08-18T08:43:15.539+05:30"},{"name":"Page View","type":"page","sentAt":"2022-08-18T08:43:15.539+05:30","userId":"identified user id","context":{"ip":"14.5.67.21","library":{"name":"http"}},"rudderId":"daf823fb-e8d3-413a-8313-d34cd756f968","messageId":"5f58d1f7-cbd6-4bff-8571-9933be7210b1","timestamp":"2020-02-02T00:23:09.544Z","properties":{"path":"/","title":"Home"},"receivedAt":"2022-08-18T08:43:13.521+05:30","request_ip":"[::1]","anonymousId":"anon-id-new","originalTimestamp":"2022-08-18T08:43:15.539+05:30"}]',
- destConfig: {
- clientContext: '',
- lambda: 'testFunction',
- invocationType: 'Event',
- },
+ destConfig: { clientContext: '', lambda: 'testFunction', invocationType: 'Event' },
},
metadata: [
{
@@ -25592,12 +25520,7 @@ export const data = [
event: 'Product Purchased new',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '9f8fb785-c720-4381-a009-bf22a13f4ced',
timestamp: '2020-02-02T00:23:09.544Z',
@@ -29859,19 +29782,11 @@ export const data = [
type: 'page',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '5f58d1f7-cbd6-4bff-8571-9933be7210b1',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- path: '/',
- title: 'Home',
- },
+ properties: { path: '/', title: 'Home' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -29921,11 +29836,7 @@ export const data = [
batchedRequest: {
payload:
'[{"name":"Screen View","type":"screen","sentAt":"2022-08-18T08:43:15.539+05:30","userId":"identified user id","context":{"ip":"14.5.67.21","library":{"name":"http"}},"rudderId":"daf823fb-e8d3-413a-8313-d34cd756f968","messageId":"1b8ee4c3-ffad-4457-b453-31b32da1dfea","timestamp":"2020-02-02T00:23:09.544Z","properties":{"prop1":"5"},"receivedAt":"2022-08-18T08:43:13.521+05:30","request_ip":"[::1]","anonymousId":"anon-id-new","originalTimestamp":"2022-08-18T08:43:15.539+05:30"},{"type":"group","sentAt":"2022-08-18T08:43:15.539+05:30","traits":{"name":"Company","industry":"Industry","employees":123},"userId":"user123","context":{"ip":"14.5.67.21","traits":{"trait1":"new-val"},"library":{"name":"http"}},"groupId":"group1","rudderId":"bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5","messageId":"2c59b527-3235-4fc2-9680-f41ec52ebb51","timestamp":"2020-01-21T00:21:34.208Z","receivedAt":"2022-08-18T08:43:13.521+05:30","request_ip":"[::1]","originalTimestamp":"2022-08-18T08:43:15.539+05:30"}]',
- destConfig: {
- clientContext: '',
- lambda: 'testFunction',
- invocationType: 'Event',
- },
+ destConfig: { clientContext: '', lambda: 'testFunction', invocationType: 'Event' },
},
metadata: [
{
@@ -29953,18 +29864,11 @@ export const data = [
type: 'screen',
sentAt: '2022-08-18T08:43:15.539+05:30',
userId: 'identified user id',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: '1b8ee4c3-ffad-4457-b453-31b32da1dfea',
timestamp: '2020-02-02T00:23:09.544Z',
- properties: {
- prop1: '5',
- },
+ properties: { prop1: '5' },
receivedAt: '2022-08-18T08:43:13.521+05:30',
request_ip: '[::1]',
anonymousId: 'anon-id-new',
@@ -30029,20 +29933,12 @@ export const data = [
EventPayload: {
type: 'group',
sentAt: '2022-08-18T08:43:15.539+05:30',
- traits: {
- name: 'Company',
- industry: 'Industry',
- employees: 123,
- },
+ traits: { name: 'Company', industry: 'Industry', employees: 123 },
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
groupId: 'group1',
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
@@ -30096,11 +29992,7 @@ export const data = [
batchedRequest: {
payload:
'[{"type":"alias","sentAt":"2022-08-18T08:43:15.539+05:30","userId":"user123","context":{"ip":"14.5.67.21","traits":{"trait1":"new-val"},"library":{"name":"http"}},"rudderId":"bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5","messageId":"3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d","timestamp":"2020-01-21T00:21:34.208Z","previousId":"previd1","receivedAt":"2022-08-18T08:43:13.521+05:30","request_ip":"[::1]","originalTimestamp":"2022-08-18T08:43:15.539+05:30"}]',
- destConfig: {
- clientContext: '',
- lambda: 'testFunction',
- invocationType: 'Event',
- },
+ destConfig: { clientContext: '', lambda: 'testFunction', invocationType: 'Event' },
},
metadata: [
{
@@ -30129,12 +30021,8 @@ export const data = [
userId: 'user123',
context: {
ip: '14.5.67.21',
- traits: {
- trait1: 'new-val',
- },
- library: {
- name: 'http',
- },
+ traits: { trait1: 'new-val' },
+ library: { name: 'http' },
},
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
messageId: '3ff8d400-b6d4-43a4-a0ff-1bc7ae8b5f7d',
@@ -38727,9 +38615,7 @@ export const data = [
],
trait1: 'new-val',
},
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
},
rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968',
messageId: 'c864b4cd-8f07-4922-b3d0-82ef04c987d3',
diff --git a/test/integrations/destinations/launchdarkly_audience/processor/data.ts b/test/integrations/destinations/launchdarkly_audience/processor/data.ts
index b26cf60f4c8..9f2370af7e6 100644
--- a/test/integrations/destinations/launchdarkly_audience/processor/data.ts
+++ b/test/integrations/destinations/launchdarkly_audience/processor/data.ts
@@ -213,6 +213,74 @@ export const data = [
},
},
},
+ {
+ name: 'launchdarkly_audience',
+ description: 'List data is empty',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user123',
+ type: 'audiencelist',
+ properties: {
+ listData: {},
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ destination: {
+ Config: {
+ audienceId: 'test-audienceId',
+ audienceName: 'test-audienceName',
+ accessToken: 'test-accessToken',
+ clientSideId: 'test-clientSideId',
+ },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+ },
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ statusCode: 400,
+ error:
+ '`listData` is empty. Aborting message.: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: `listData` is empty. Aborting message.',
+ statTags: {
+ destType: 'LAUNCHDARKLY_AUDIENCE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ },
+ },
+ ],
+ },
+ },
+ },
{
name: 'launchdarkly_audience',
description: 'Unsupported action type',
diff --git a/test/integrations/destinations/leanplum/router/data.ts b/test/integrations/destinations/leanplum/router/data.ts
index db75a7fdc47..29282c8b290 100644
--- a/test/integrations/destinations/leanplum/router/data.ts
+++ b/test/integrations/destinations/leanplum/router/data.ts
@@ -27,49 +27,25 @@ export const data = [
name: 'generic_x86',
type: 'android',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '5094f5704b9cf2b3',
- },
+ traits: { anonymousId: '5094f5704b9cf2b3' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'MainActivity',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'id1',
- properties: {
- name: 'MainActivity',
- automatic: true,
- },
+ properties: { name: 'MainActivity', automatic: true },
originalTimestamp: '2020-03-12T09:05:03.421Z',
type: 'screen',
sentAt: '2020-03-12T09:05:13.042Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
applicationId: 'leanplum_application_id',
@@ -98,12 +74,8 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.leanplum.com/api',
- headers: {
- 'Content-Type': 'application/json',
- },
- params: {
- action: 'start',
- },
+ headers: { 'Content-Type': 'application/json' },
+ params: { action: 'start' },
body: {
JSON: {
appId: 'leanplum_application_id',
@@ -116,9 +88,7 @@ export const data = [
systemVersion: '8.1.0',
deviceName: 'generic_x86',
deviceModel: 'Android SDK built for x86',
- userAttributes: {
- anonymousId: '5094f5704b9cf2b3',
- },
+ userAttributes: { anonymousId: '5094f5704b9cf2b3' },
locale: 'en-US',
timezone: 'Asia/Kolkata',
time: 1584003903,
@@ -136,12 +106,8 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.leanplum.com/api',
- headers: {
- 'Content-Type': 'application/json',
- },
- params: {
- action: 'advance',
- },
+ headers: { 'Content-Type': 'application/json' },
+ params: { action: 'advance' },
body: {
JSON: {
appId: 'leanplum_application_id',
@@ -161,11 +127,7 @@ export const data = [
userId: '5094f5704b9cf2b3',
},
],
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -211,49 +173,25 @@ export const data = [
name: 'generic_x86',
type: 'android',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '5094f5704b9cf2b3',
- },
+ traits: { anonymousId: '5094f5704b9cf2b3' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'MainActivity',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'id2',
- properties: {
- name: 'MainActivity',
- automatic: true,
- },
+ properties: { name: 'MainActivity', automatic: true },
originalTimestamp: '2020-03-12T09:05:03.421Z',
type: 'screen',
sentAt: '2020-03-12T09:05:13.042Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
applicationId: 'leanplum_application_id',
@@ -282,12 +220,8 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.leanplum.com/api',
- headers: {
- 'Content-Type': 'application/json',
- },
- params: {
- action: 'start',
- },
+ headers: { 'Content-Type': 'application/json' },
+ params: { action: 'start' },
body: {
JSON: {
appId: 'leanplum_application_id',
@@ -300,9 +234,7 @@ export const data = [
systemVersion: '8.1.0',
deviceName: 'generic_x86',
deviceModel: 'Android SDK built for x86',
- userAttributes: {
- anonymousId: '5094f5704b9cf2b3',
- },
+ userAttributes: { anonymousId: '5094f5704b9cf2b3' },
locale: 'en-US',
timezone: 'Asia/Kolkata',
time: 1584003903,
@@ -320,12 +252,8 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.leanplum.com/api',
- headers: {
- 'Content-Type': 'application/json',
- },
- params: {
- action: 'advance',
- },
+ headers: { 'Content-Type': 'application/json' },
+ params: { action: 'advance' },
body: {
JSON: {
appId: 'leanplum_application_id',
@@ -345,11 +273,7 @@ export const data = [
userId: '5094f5704b9cf2b3',
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/lemnisk/router/data.ts b/test/integrations/destinations/lemnisk/router/data.ts
index 1a1b84f180f..2f6364a0b04 100644
--- a/test/integrations/destinations/lemnisk/router/data.ts
+++ b/test/integrations/destinations/lemnisk/router/data.ts
@@ -12,12 +12,7 @@ export const data = [
{
message: {
anonymousId: 'anon-id-new',
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
type: 'identify',
},
destination: {
@@ -87,9 +82,7 @@ export const data = [
rootStore: null,
isProcessorEnabled: true,
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
message: {
@@ -102,10 +95,7 @@ export const data = [
event: 'Visited Home',
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-29T14:50:29.907+05:30',
- traits: {
- name: 'Home | RudderStack',
- url: 'http://www.rudderstack.com',
- },
+ traits: { name: 'Home | RudderStack', url: 'http://www.rudderstack.com' },
receivedAt: '2020-09-29T14:50:43.005+05:30',
sentAt: '2020-09-28T19:53:44.998Z',
timestamp: '2020-09-29T14:50:29.907+05:30',
@@ -185,6 +175,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
{
@@ -192,39 +183,20 @@ export const data = [
anonymousId: 'anon-id-new',
channel: 'mobile',
context: {
- app: {
- build: '4',
- name: 'RuddCDN',
- },
- page: {
- referrer: 'google.com',
- },
- device: {
- id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
- name: 'generic_x86_arm',
- },
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.6',
- },
- os: {
- name: 'Android',
- version: '9',
- },
+ app: { build: '4', name: 'RuddCDN' },
+ page: { referrer: 'google.com' },
+ device: { id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a', name: 'generic_x86_arm' },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.6' },
+ os: { name: 'Android', version: '9' },
timezone: 'Asia/Kolkata',
- traits: {
- customProp: 'customValue',
- },
+ traits: { customProp: 'customValue' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
event: 'Visited Home',
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-28T19:53:31.900Z',
- properties: {
- title: 'Home | RudderStack',
- url: 'http://www.rudderstack.com',
- },
+ properties: { title: 'Home | RudderStack', url: 'http://www.rudderstack.com' },
receivedAt: '2020-09-29T14:50:43.005+05:30',
sentAt: '2020-09-28T19:53:44.998Z',
timestamp: '2020-09-29T14:50:29.907+05:30',
@@ -304,6 +276,7 @@ export const data = [
jobId: 129,
messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
],
@@ -385,11 +358,7 @@ export const data = [
rootStore: null,
isProcessorEnabled: true,
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statTags: {
destType: 'LEMNISK',
feature: 'router',
@@ -408,9 +377,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'http://10.11.36.17:8080/analyze/analyze.php',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -512,6 +479,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
batched: false,
@@ -523,45 +491,27 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'http://10.11.36.17:8080/analyze/analyze.php',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
type: 'track',
context: {
- app: {
- build: '4',
- name: 'RuddCDN',
- },
- page: {
- referrer: 'google.com',
- },
+ app: { build: '4', name: 'RuddCDN' },
+ page: { referrer: 'google.com' },
device: {
id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
name: 'generic_x86_arm',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.6',
- },
- os: {
- name: 'Android',
- version: '9',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.6' },
+ os: { name: 'Android', version: '9' },
timezone: 'Asia/Kolkata',
- traits: {
- customProp: 'customValue',
- },
+ traits: { customProp: 'customValue' },
userAgent: {
ua: 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
},
- properties: {
- title: 'Home | RudderStack',
- url: 'http://www.rudderstack.com',
- },
+ properties: { title: 'Home | RudderStack', url: 'http://www.rudderstack.com' },
event: 'Visited Home',
id: 'anon-id-new',
userId: 'anon-id-new',
@@ -651,6 +601,7 @@ export const data = [
jobId: 129,
messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/lytics/router/data.ts b/test/integrations/destinations/lytics/router/data.ts
index 98aded20bfc..e5d9adae5ca 100644
--- a/test/integrations/destinations/lytics/router/data.ts
+++ b/test/integrations/destinations/lytics/router/data.ts
@@ -20,15 +20,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.6',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.6',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.6' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/testing/script-test.html',
referrer: '',
@@ -36,13 +30,9 @@ export const data = [
title: '',
url: 'http://localhost:3243/testing/script-test.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
traits: {
- company: {
- id: 'abc123',
- },
+ company: { id: 'abc123' },
createdAt: 'Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)',
email: 'rudderTest@gmail.com',
name: 'Rudder Test',
@@ -52,9 +42,7 @@ export const data = [
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
},
event: 'Order Completed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'a0adfab9-baf7-4e09-a2ce-bbe2844c324a',
timestamp: '2020-10-16T08:10:12.782Z',
properties: {
@@ -123,14 +111,9 @@ export const data = [
type: 'track',
userId: 'rudder123',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- stream: 'default',
- },
+ Config: { apiKey: 'dummyApiKey', stream: 'default' },
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
@@ -147,15 +130,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.6',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.6',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.6' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/testing/script-test.html',
referrer: '',
@@ -163,13 +140,9 @@ export const data = [
title: '',
url: 'http://localhost:3243/testing/script-test.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
traits: {
- company: {
- id: 'abc123',
- },
+ company: { id: 'abc123' },
createdAt: 'Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)',
email: 'rudderTest@gmail.com',
name: 'Rudder Test',
@@ -178,9 +151,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'e108eb05-f6cd-4624-ba8c-568f2e2b3f92',
originalTimestamp: '2020-10-16T08:26:14.938Z',
receivedAt: '2020-10-16T13:56:14.945+05:30',
@@ -190,14 +161,9 @@ export const data = [
type: 'identify',
userId: 'rudder123',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- stream: 'default',
- },
+ Config: { apiKey: 'dummyApiKey', stream: 'default' },
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
@@ -220,9 +186,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.lytics.io/collect/json/default?access_token=dummyApiKey',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -284,18 +248,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- stream: 'default',
- },
+ Config: { apiKey: 'dummyApiKey', stream: 'default' },
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
@@ -307,9 +264,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.lytics.io/collect/json/default?access_token=dummyApiKey',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -326,18 +281,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'dummyApiKey',
- stream: 'default',
- },
+ Config: { apiKey: 'dummyApiKey', stream: 'default' },
Enabled: true,
Transformations: [],
IsProcessorEnabled: true,
diff --git a/test/integrations/destinations/mailchimp/network.ts b/test/integrations/destinations/mailchimp/network.ts
new file mode 100644
index 00000000000..b036bf566c0
--- /dev/null
+++ b/test/integrations/destinations/mailchimp/network.ts
@@ -0,0 +1,80 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://usXXX.api.mailchimp.com/3.0/lists/aud111/members/0b63fa319d113aede8b7b409e4fc6437',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ data: {
+ type: 'https://mailchimp.com/developer/marketing/docs/errors/',
+ title: 'Forbidden',
+ status: 403,
+ detail: "The API key provided is linked to datacenter 'us6'",
+ instance: 'ff092056-4d86-aa05-bbe9-9e9466108d81',
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ contact_id: 821932121,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/b599284b872e06d29bb796a260ae7c1f',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ contact_id: 821932121,
+ },
+ status: 204,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://usXX.api.mailchimp.com/3.0/lists/aud000',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ double_optin: false,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://usXX.api.mailchimp.com/3.0/lists/aud112',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ double_optin: false,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://usXX.api.mailchimp.com/3.0/lists/aud002',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ double_optin: false,
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/mailchimp/processor/data.ts b/test/integrations/destinations/mailchimp/processor/data.ts
new file mode 100644
index 00000000000..a0ee5de3d39
--- /dev/null
+++ b/test/integrations/destinations/mailchimp/processor/data.ts
@@ -0,0 +1,2259 @@
+export const data = [
+ {
+ name: 'mailchimp',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ firstName: 'Bob',
+ lastName: 'Dole',
+ zip: '123',
+ state: 'test',
+ city: 'test',
+ addressLine1: 'test',
+ birthday: '2000-05-06',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ merge_fields: {
+ ADDRESS: {
+ addr1: 'test',
+ city: 'test',
+ state: 'test',
+ zip: '123',
+ },
+ FNAME: 'Bob',
+ LNAME: 'Dole',
+ ANONYMOUSI: 'userId12345',
+ BIRTHDAY: '05/06',
+ },
+ email_address: 'bob.dole@initech.com',
+ status: 'subscribed',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ MailChimp: {
+ subscriptionStatus: 'subscribed',
+ },
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ status: 'subscribed',
+ email_address: 'bob.dole@initech.com',
+ merge_fields: {
+ ANONYMOUSI: 'userId12345',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'Titli Test',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2021-05-18T06:58:57.186Z',
+ userId: 'test.rudderlabs@yara.com',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'https://app.rudderstack.com/sources/1qHR2Qzd894ievNGc4aBHmjltLD',
+ path: '/sources/1qHR2Qzd894ievNGc4aBHmjltLD',
+ title: 'RudderStack',
+ search: '',
+ tab_url: 'https://app.rudderstack.com/sources/1qHR2Qzd894ievNGc4aBHmjltLD',
+ referrer: '$direct',
+ initial_referrer: 'https://www.google.com/',
+ referring_domain: '',
+ initial_referring_domain: 'www.google.com',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1792,
+ height: 1120,
+ density: 2,
+ },
+ traits: {
+ name: 'test rudderlabs',
+ email: 'test.rudderlabs@yara.com',
+ userId: '1sWVaQTxoVwjvShC0295E6OqMaP',
+ first_login: false,
+ workspaceId: '1jWrHYPjNGSHbvKwzow0ZFPIQll',
+ account_type: 'invited',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.18',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
+ },
+ rudderId: '6d612dda-9c8c-4062-9d09-af9425b846ce',
+ messageId: 'c6d49688-89f2-45cf-b061-0ae3c212a4e5',
+ timestamp: '2021-05-18T06:58:57.811Z',
+ receivedAt: '2021-05-18T06:58:57.812Z',
+ request_ip: '122.172.221.51',
+ anonymousId: '6914679f-fd34-45ef-86e0-4930e6e8b91a',
+ integrations: {
+ Salesforce: true,
+ },
+ originalTimestamp: '2021-05-18T06:58:57.185Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'User does not have access to the requested operation',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'Titli Test',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ type: 'page',
+ sentAt: '2021-05-18T07:02:17.675Z',
+ userId: '',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.18',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ path: '/signup',
+ title: '',
+ search: '?type=freetrial',
+ tab_url: 'https://app.rudderstack.com/signup?type=freetrial',
+ referrer:
+ 'https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e',
+ initial_referrer:
+ 'https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e',
+ referring_domain: 'rudderstack.medium.com',
+ initial_referring_domain: 'rudderstack.medium.com',
+ },
+ locale: 'en-GB',
+ screen: {
+ density: 2,
+ },
+ traits: {},
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.18',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
+ },
+ rudderId: '4dbe224c-6aea-4d89-8da6-09d27c0d2908',
+ messageId: '72df8cb0-54ab-417c-8e87-e97e9d339feb',
+ timestamp: '2021-05-18T07:02:18.566Z',
+ properties: {
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ path: '/signup',
+ title: '',
+ search: '?type=freetrial',
+ tab_url: 'https://app.rudderstack.com/signup?type=freetrial',
+ referrer:
+ 'https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e',
+ initial_referrer:
+ 'https://rudderstack.medium.com/kafka-vs-postgresql-how-we-implemented-our-queueing-system-using-postgresql-ec128650e3e',
+ referring_domain: 'rudderstack.medium.com',
+ initial_referring_domain: 'rudderstack.medium.com',
+ },
+ receivedAt: '2021-05-18T07:02:18.566Z',
+ request_ip: '162.44.150.11',
+ anonymousId: '58ec7b39-48f1-4d83-9d45-a48c64f96fa0',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-05-18T07:02:17.675Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type page is not supported',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email_address',
+ id: 'bob.dole@initech.com',
+ type: 'audience',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ traits: {
+ merge_fields: {
+ FIRSTNAME: 'Bob',
+ },
+ status: 'subscribed',
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ merge_fields: {
+ FIRSTNAME: 'Bob',
+ },
+ status: 'subscribed',
+ email_address: 'bob.dole@initech.com',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ type: 'identify',
+ traits: {
+ status: 'subscri',
+ },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Email is required for identify',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud112',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'jhon@gmail.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ status: 'subscribed',
+ email_address: 'jhon@gmail.com',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ audienceId: 'aud112',
+ version: '1',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud112/members/7f3863b197eeff650876bb89eca08e57',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'bob.dole@initech.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ email_address: 'bob.dole@initech.com',
+ status: 'subscribed',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ audienceId: 'aud111',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ version: '1',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ MailChimp: {
+ subscriptionStatus: 'subscribed',
+ },
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ status: 'subscribed',
+ email_address: 'bob.dole@initech.com',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: '',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'test-rudderlabs',
+ email: 'test-rudderlabs-test@initech.com',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'API Key not found. Aborting',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'test-rudderlabs',
+ email: 'test-rudderlabs-test@initech.com',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Audience Id not found. Aborting',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: '',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'test-rudderlabs',
+ email: 'test-rudderlabs-test@initech.com',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'DataCenter Id not found. Aborting',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ anonymousId: 'test-rudderlabs',
+ email: 'test-rudderlabs-test@initech.com',
+ firstName: 'Test',
+ lastName: 'Rudderlabs',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'group',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'message type group is not supported',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 14',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 15',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ is_syncing: false,
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 16',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ },
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Email is required for track',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 17',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "event"',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 18',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 19',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ products: [
+ {
+ product_id: '123',
+ price: '14',
+ },
+ {
+ product_id: '123',
+ price: 14,
+ },
+ ],
+ purchased: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ is_syncing: false,
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ products: '[{"product_id":"123","price":"14"},{"product_id":"123","price":14}]',
+ purchased: 'false',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 20',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ products: [
+ {
+ product_id: '123',
+ price: '14',
+ },
+ {
+ product_id: '123',
+ price: 14,
+ },
+ ],
+ purchased: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 22,
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmR1bW15QXBpS2V5',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: '22',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ is_syncing: false,
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ products: '[{"product_id":"123","price":"14"},{"product_id":"123","price":14}]',
+ purchased: 'false',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 21',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ products: [
+ {
+ product_id: '123',
+ price: '14',
+ },
+ {
+ product_id: '123',
+ price: 14,
+ },
+ ],
+ purchased: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'E',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event name should be between 2 and 30 characters',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'Test 22',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'dummyApiKey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ },
+ },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ products: [
+ {
+ product_id: '123',
+ price: '14',
+ },
+ {
+ product_id: '123',
+ price: 14,
+ },
+ ],
+ purchased: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'Event Name more than 30 characters abcdefghijklmno',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event name should be between 2 and 30 characters',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/mailchimp/router/data.ts b/test/integrations/destinations/mailchimp/router/data.ts
new file mode 100644
index 00000000000..93635e53692
--- /dev/null
+++ b/test/integrations/destinations/mailchimp/router/data.ts
@@ -0,0 +1,821 @@
+export const data = [
+ {
+ name: 'mailchimp',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: {
+ anonymousId: 'userId12345',
+ email: 'bob.dole@initech.com',
+ firstName: 'Bob',
+ lastName: 'Dole',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: { All: true },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'userId12345', email: 'bob.dole@initech.com' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: { MailChimp: { subscriptionStatus: 'subscribed' } },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { anonymousId: 'userId12345', email: 'bob.dole@initech.com' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: { MailChimp: { subscriptionStatus: 'subscrib' } },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: { traits: { anonymousId: 'userId12345', email: 'bob.dole@initech.com' } },
+ properties: { brand: 'Aster', product: 'Garments' },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 6, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: { traits: { anonymousId: 'userId12345', email: 'bob.dole@initech.com' } },
+ properties: { brand: 'Aster', product: 'Garments', is_syncing: false },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 7, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: { traits: { anonymousId: 'userId12345', email: 'bob.dole@initech.com' } },
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ isSyncing: false,
+ products: [
+ { product_id: '123', price: '14' },
+ { product_id: '123', price: 14 },
+ ],
+ purchased: false,
+ },
+ messageId: '6d1f3ca8-e2d0-4d34-9926-44596171af0c',
+ originalTimestamp: '2019-11-15T10:26:53Z',
+ receivedAt: '2019-11-15T15:56:58+05:30',
+ sentAt: '2019-11-15T10:26:58Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:56:53+05:30',
+ type: 'track',
+ event: 'local testing',
+ userId: 'userId12345',
+ },
+ },
+ ],
+ destType: 'mailchimp',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111?skip_merge_validation=true&skip_duplicate_check=false',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmFwaWtleQ==',
+ },
+ params: {},
+ body: {
+ JSON: {
+ members: [
+ {
+ email_address: 'bob.dole@initech.com',
+ merge_fields: { FNAME: 'Bob', LNAME: 'Dole', ANONYMOUSI: 'userId12345' },
+ status: 'subscribed',
+ },
+ {
+ email_address: 'bob.dole@initech.com',
+ merge_fields: { ANONYMOUSI: 'userId12345' },
+ status: 'subscribed',
+ },
+ ],
+ update_existing: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 2, userId: 'u1' },
+ { jobId: 3, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmFwaWtleQ==',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ properties: { brand: 'Aster', product: 'Garments' },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ },
+ metadata: [{ jobId: 5, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://usXX.api.mailchimp.com/3.0/lists/aud111/members/48cd6232dc124497369f59c33d3eb4ab/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmFwaWtleQ==',
+ },
+ params: {},
+ body: {
+ JSON: {
+ name: 'local_testing',
+ occurred_at: '2019-11-15T10:26:53+00:00',
+ is_syncing: false,
+ properties: {
+ brand: 'Aster',
+ product: 'Garments',
+ products:
+ '[{"product_id":"123","price":"14"},{"product_id":"123","price":14}]',
+ purchased: 'false',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ audienceId: 'aud111',
+ },
+ metadata: [{ jobId: 7, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: [{ jobId: 6, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'Missing required value from "event"',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apikey',
+ audienceId: 'aud111',
+ datacenterId: 'usXX',
+ enableMergeFields: true,
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error:
+ 'The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'mailchimp',
+ description: 'events batching',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ anonymousId: 'userId12345',
+ channel: 'web',
+ context: {
+ mappedToDestination: true,
+ externalId: [
+ {
+ identifierType: 'email_address',
+ id: 'bob.dole@initech.com',
+ type: 'audience',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ ip: '0.0.0.0',
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ locale: 'en-US',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',
+ },
+ integrations: { All: true },
+ traits: { merge_fields: { FIRSTNAME: 'Bob' }, status: 'subscribed' },
+ messageId: '21e475b2-3694-477b-afb6-5b94a81aac21',
+ originalTimestamp: '2019-11-15T10:22:32Z',
+ receivedAt: '2019-11-15T15:52:37+05:30',
+ request_ip: '[::1]:62921',
+ sentAt: '2019-11-15T10:22:37Z',
+ source_id: '1TdhTcwsUVOeEMWyPUpQIgF3pYr',
+ timestamp: '2019-11-15T15:52:32+05:30',
+ type: 'identify',
+ userId: 'userId12345',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ type: 'identify',
+ traits: { status: 'subscribed' },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ message: {
+ type: 'identify',
+ traits: { status: 'subscribed' },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ message: {
+ type: 'identify',
+ traits: { status: 'subscrib' },
+ userId: 'emrichardson820+22822@gmail.com',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '24c5HJxHomh6YCngEOCgjS5r1KX/Syncher',
+ task_id: 'vw_rs_mailchimp_mocked_hg_data',
+ version: 'v1.8.1',
+ batch_id: 'f252c69d-c40d-450e-bcd2-2cf26cb62762',
+ job_run_id: 'c8el40l6e87v0c4hkbl0',
+ task_run_id: 'c8el40l6e87v0c4hkblg',
+ },
+ externalId: [
+ {
+ id: 'emrichardson820+22822@gmail.com',
+ type: 'MAILCHIMP-92e1f1ad2c',
+ identifierType: 'email_address',
+ },
+ ],
+ mappedToDestination: 'true',
+ },
+ recordId: '1',
+ rudderId: '4d5d0ed0-9db8-41cc-9bb0-a032f6bfa97a',
+ messageId: 'b3bee036-fc26-4f6d-9867-c17f85708a82',
+ },
+ },
+ ],
+ destType: 'mailchimp',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://us20.api.mailchimp.com/3.0/lists/1232yyqw22?skip_merge_validation=false&skip_duplicate_check=false',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YXBpS2V5OmFwaUtleS1kdW1teUFwaUtleQ==',
+ },
+ params: {},
+ body: {
+ JSON: {
+ members: [
+ {
+ merge_fields: { FIRSTNAME: 'Bob' },
+ status: 'subscribed',
+ email_address: 'bob.dole@initech.com',
+ },
+ { status: 'subscribed', email_address: 'emrichardson820+22822@gmail.com' },
+ { status: 'subscribed', email_address: 'emrichardson820+22822@gmail.com' },
+ ],
+ update_existing: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 2, userId: 'u1' },
+ { jobId: 3, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ {
+ destination: {
+ ID: '1Tdi0lpXwSVwXG1lcdP2pXHKrJ6',
+ Name: 'test-mc',
+ DestinationDefinition: {
+ ID: '1SujZGrVEPqYmpUJcV4vSl9tfxn',
+ Name: 'MC',
+ DisplayName: 'MailChimp',
+ },
+ Config: {
+ apiKey: 'apiKey-dummyApiKey',
+ audienceId: '1232yyqw22',
+ datacenterId: 'us20',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: [{ jobId: 5, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error:
+ 'The status must be one of [subscribed, unsubscribed, cleaned, pending, transactional]',
+ statTags: {
+ destType: 'MAILCHIMP',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/mailjet/router/data.ts b/test/integrations/destinations/mailjet/router/data.ts
index 85c96629ffe..689e73ef2a6 100644
--- a/test/integrations/destinations/mailjet/router/data.ts
+++ b/test/integrations/destinations/mailjet/router/data.ts
@@ -5,6 +5,94 @@ export const data = [
feature: 'router',
module: 'destination',
version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ userId: 'user@45',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ },
+ },
+ },
+ ],
+ destType: 'mailjet',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/58578/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ Action: 'addnoforce',
+ Contacts: [{ email: 'test@user.com', properties: { country: 'india' } }],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'mailjet',
+ description: 'batching with 1 listId and 1 action',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
input: {
request: {
body: {
@@ -20,6 +108,7 @@ export const data = [
},
metadata: {
jobId: 1,
+ userId: 'u1',
},
message: {
userId: 'user@45',
@@ -80,6 +169,7 @@ export const data = [
metadata: [
{
jobId: 1,
+ userId: 'u1',
},
],
batched: true,
@@ -103,4 +193,586 @@ export const data = [
},
},
},
+ {
+ name: 'mailjet',
+ description: 'batching with multiple listId and multiple action combinations',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@45',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@46',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test2@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ externalId: [
+ {
+ type: 'listId',
+ id: '58570',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ mailjet: {
+ Action: 'unsub',
+ },
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@47',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test3@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ externalId: [
+ {
+ type: 'listId',
+ id: '58576',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ mailjet: {
+ Action: 'addforce',
+ },
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@48',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test4@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ externalId: [
+ {
+ type: 'listId',
+ id: '58576',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ mailjet: {
+ Action: 'unsub',
+ },
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 5,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@49',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test5@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ externalId: [
+ {
+ type: 'listId',
+ id: '585896',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ mailjet: {
+ Action: 'unsub',
+ },
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 6,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@49',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test5@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ externalId: [
+ {
+ type: 'listId',
+ id: '584896',
+ },
+ ],
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [{ from: 'userCountry', to: 'country' }],
+ },
+ },
+ metadata: {
+ jobId: 7,
+ userId: 'u1',
+ },
+ message: {
+ userId: 'user@50',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'test10@user.com',
+ phone: '7267286346802347827',
+ userId: 'sajal',
+ city: 'gondal',
+ userCountry: 'india',
+ lastName: 'dev',
+ username: 'Samle_putUserName',
+ firstName: 'rudderlabs',
+ },
+ },
+ },
+ },
+ ],
+ destType: 'mailjet',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/58578/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'addnoforce',
+ Contacts: [
+ {
+ email: 'test@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ {
+ email: 'test10@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 7, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/58570/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'unsub',
+ Contacts: [
+ {
+ email: 'test2@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/58576/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'addforce',
+ Contacts: [
+ {
+ email: 'test3@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/58576/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'unsub',
+ Contacts: [
+ {
+ email: 'test4@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/585896/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'unsub',
+ Contacts: [
+ {
+ email: 'test5@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 5, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.mailjet.com/v3/REST/contactslist/584896/managemanycontacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic ZHVtbXlBcGlLZXk6ZHVtbXlBcGlTZWNyZXQ=',
+ },
+ params: {},
+ body: {
+ JSON: {
+ Action: 'addnoforce',
+ Contacts: [
+ {
+ email: 'test5@user.com',
+ properties: {
+ country: 'india',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 6, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ apiSecret: 'dummyApiSecret',
+ listId: '58578',
+ contactPropertiesMapping: [
+ {
+ from: 'userCountry',
+ to: 'country',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/mailmodo/router/data.ts b/test/integrations/destinations/mailmodo/router/data.ts
index c341259bbed..3b492b0a827 100644
--- a/test/integrations/destinations/mailmodo/router/data.ts
+++ b/test/integrations/destinations/mailmodo/router/data.ts
@@ -14,15 +14,8 @@ export const data = [
type: 'identify',
event: 'Email Opened',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453',
properties: {
@@ -34,31 +27,16 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 2,
- },
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: 'abc',
- },
- Enabled: true,
- },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: 'abc' }, Enabled: true },
},
{
message: {
type: 'track',
event: 'Email Opened',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453',
properties: {
@@ -70,16 +48,8 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 3,
- },
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: 'abc',
- },
- Enabled: true,
- },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: 'abc' }, Enabled: true },
},
{
message: {
@@ -87,13 +57,9 @@ export const data = [
userId: 'identified user id',
anonymousId: 'anon-id-new',
context: {
- traits: {
- trait1: 'new-val',
- },
+ traits: { trait1: 'new-val' },
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
},
traits: {
email: 'test@abc.com',
@@ -105,31 +71,16 @@ export const data = [
},
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 4,
- },
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: 'abc',
- },
- Enabled: true,
- },
+ metadata: { jobId: 4, userId: 'u1' },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: 'abc' }, Enabled: true },
},
{
message: {
type: 'identify',
event: 'Email Opened',
sentAt: '2020-08-28T16:26:16.473Z',
- context: {
- library: {
- name: 'analytics-node',
- version: '0.0.3',
- },
- },
- _metadata: {
- nodeVersion: '10.22.0',
- },
+ context: { library: { name: 'analytics-node', version: '0.0.3' } },
+ _metadata: { nodeVersion: '10.22.0' },
messageId:
'node-570110489d3e99b234b18af9a9eca9d4-6009779e-82d7-469d-aaeb-5ccf162b0453',
properties: {
@@ -140,16 +91,8 @@ export const data = [
anonymousId: 'abcdeeeeeeeexxxx102',
originalTimestamp: '2020-08-28T16:26:06.468Z',
},
- metadata: {
- jobId: 5,
- },
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: '',
- },
- Enabled: true,
- },
+ metadata: { jobId: 5, userId: 'u1' },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: '' }, Enabled: true },
},
],
destType: 'mailmodo',
@@ -171,9 +114,7 @@ export const data = [
JSON: {
listName: 'abc',
values: [
- {
- email: 'test@abc.com',
- },
+ { email: 'test@abc.com' },
{
email: 'test@abc.com',
data: {
@@ -192,30 +133,17 @@ export const data = [
files: {},
method: 'POST',
params: {},
- headers: {
- mmApiKey: 'dummyApiKey',
- 'Content-Type': 'application/json',
- },
+ headers: { mmApiKey: 'dummyApiKey', 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://api.mailmodo.com/api/v1/addToList/batch',
},
metadata: [
- {
- jobId: 2,
- },
- {
- jobId: 4,
- },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 4, userId: 'u1' },
],
batched: true,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: 'abc',
- },
- Enabled: true,
- },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: 'abc' }, Enabled: true },
},
{
batchedRequest: {
@@ -238,37 +166,20 @@ export const data = [
files: {},
method: 'POST',
params: {},
- headers: {
- mmApiKey: 'dummyApiKey',
- 'Content-Type': 'application/json',
- },
+ headers: { mmApiKey: 'dummyApiKey', 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://api.mailmodo.com/api/v1/addEvent',
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: 'abc',
- },
- Enabled: true,
- },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: 'abc' }, Enabled: true },
},
{
batched: false,
error:
'Missing required value from ["traits.email","context.traits.email","properties.email"]',
- metadata: [
- {
- jobId: 5,
- },
- ],
+ metadata: [{ jobId: 5, userId: 'u1' }],
statTags: {
destType: 'MAILMODO',
errorCategory: 'dataValidation',
@@ -278,13 +189,7 @@ export const data = [
module: 'destination',
},
statusCode: 400,
- destination: {
- Config: {
- apiKey: 'dummyApiKey',
- listName: '',
- },
- Enabled: true,
- },
+ destination: { Config: { apiKey: 'dummyApiKey', listName: '' }, Enabled: true },
},
],
},
diff --git a/test/integrations/destinations/marketo/network.ts b/test/integrations/destinations/marketo/network.ts
index b0c61742815..9c28a9aef1d 100644
--- a/test/integrations/destinations/marketo/network.ts
+++ b/test/integrations/destinations/marketo/network.ts
@@ -241,4 +241,732 @@ export const networkCallsData = [
statusText: 'OK',
},
},
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_success.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_token_failure.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_expired',
+ expires_in: 0,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json',
+ method: 'get',
+ },
+ httpRes: {
+ data: {
+ requestId: '7ab2#17672a46a99',
+ result: [
+ {
+ id: 4,
+ status: 'created',
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json?filterType=email&filterValues=arnab.compsc%40gmail.com',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '107#17672aeadba',
+ result: [],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json?filterType=userId&filterValues=test-user-6j55yr',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '12093#17672aeaee6',
+ result: [
+ {
+ createdAt: '2020-12-17T21:39:07Z',
+ email: null,
+ firstName: null,
+ id: 4,
+ lastName: null,
+ updatedAt: '2020-12-17T21:39:07Z',
+ userId: 'test-user-6j55yr',
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://marketo_acct_id_failed.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ success: false,
+ errors: [
+ {
+ code: '601',
+ message: 'Access Token Expired',
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://munchkinId.mktorest.com/identity/oauth/token?client_id=b&client_secret=clientSecret&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_acess',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://munchkinId.mktorest.com/identity/oauth/token?client_id=wrongClientId&client_secret=clientSecret&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://munchkinId.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://munchkinId.mktorest.com/bulk/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '5bdd#17fd1ff88cd',
+ result: [
+ {
+ batchId: 2977,
+ importId: '2977',
+ status: 'Queued',
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.mktorest.com/identity/oauth/token?client_id=b&client_secret=forThrottle&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin4.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin4.mktorest.com/bulk/v1/leads/batch/1234.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ errors: [
+ {
+ message: 'Any 400 error',
+ code: 1000,
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin3.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin500.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'test_access_token',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin500.mktorest.com/bulk/v1/leads/batch/1234.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ errors: [
+ {
+ message: 'Any 500 error',
+ code: 502,
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.mktorest.com/bulk/v1/leads/batch/12345/warnings.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: 'data \n data',
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://a.mktorest.com/bulk/v1/leads/batch/12345/failures.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: 'data \n data',
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin1.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin1.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin1.mktorest.com/bulk/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ success: false,
+ errors: [
+ {
+ code: 603,
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin2.mktorest.com/identity/oauth/token?client_id=b&client_secret=c&grant_type=client_credentials',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin2.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'Email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin2.mktorest.com/bulk/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ success: false,
+ errors: [
+ {
+ message: 'There are 10 imports currently being processed. Please try again later',
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin3.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'Email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin3.mktorest.com/bulk/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ success: false,
+ errors: [
+ {
+ message: 'Empty file',
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin4.mktorest.com/rest/v1/leads/describe2.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7fa1#17fd1da66fe',
+ result: [
+ {
+ name: 'API Lead',
+ searchableFields: [['email']],
+ fields: [
+ {
+ name: 'Email',
+ displayName: 'Email Address',
+ dataType: 'email',
+ length: 255,
+ updateable: true,
+ crmManaged: false,
+ },
+ ],
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://testMunchkin4.mktorest.com/bulk/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ success: false,
+ errors: [
+ {
+ message: 'Any other error',
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://valid_account_broken_event.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://valid_account_broken_event.mktorest.com/rest/v1/leads.json?filterType=email&filterValues=0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '12093#17672aeaee6',
+ result: [],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://valid_account_broken_event.mktorest.com/rest/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '142e4#1835b117b76',
+ success: false,
+ errors: [
+ {
+ code: '1006',
+ message: "Lookup field 'userId' not found",
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://unhandled_status_code.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://unhandled_status_code.mktorest.com/rest/v1/leads.json?filterType=email&filterValues=0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '12093#17672aeaee6',
+ result: [],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://unhandled_status_code.mktorest.com/rest/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '142e4#1835b117b76',
+ success: false,
+ errors: [
+ {
+ code: 'random_marketo_code',
+ message: 'some other problem',
+ },
+ ],
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://successful_identify_transformation.mktorest.com/identity/oauth/token',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ access_token: 'access_token_success',
+ expires_in: 3599,
+ scope: 'integrations@rudderstack.com',
+ token_type: 'bearer',
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://successful_identify_transformation.mktorest.com/rest/v1/leads.json',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '7ab2#17672a46a99',
+ result: [
+ {
+ id: 4,
+ status: 'created',
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://successful_identify_transformation.mktorest.com/rest/v1/leads.json?filterType=email&filterValues=0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ requestId: '12093#17672aeaee6',
+ result: [
+ {
+ createdAt: '2022-09-17T21:39:07Z',
+ email: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ firstName: 'random_first',
+ id: 4,
+ lastName: 'random_last',
+ updatedAt: '2022-09-20T21:48:07Z',
+ userId: 'test-user-957ue',
+ },
+ ],
+ success: true,
+ },
+ status: 200,
+ statusText: 'OK',
+ },
+ },
];
diff --git a/test/integrations/destinations/marketo/processor/data.ts b/test/integrations/destinations/marketo/processor/data.ts
new file mode 100644
index 00000000000..38201bd60df
--- /dev/null
+++ b/test/integrations/destinations/marketo/processor/data.ts
@@ -0,0 +1,1745 @@
+export const data = [
+ {
+ name: 'marketo',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'sources',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'email',
+ type: 'MARKETO-new_user',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: {
+ batch_id: 'f5f240d0-0acb-46e0-b043-57fb0aabbadd',
+ job_id: '1zAj94bEy8komdqnYtSoDp0VmGs/Syncher',
+ job_run_id: 'c5tar6cqgmgmcjvupdhg',
+ task_id: 'tt_10_rows_check',
+ task_run_id: 'c5tar6cqgmgmcjvupdi0',
+ version: 'release.v1.6.8',
+ },
+ },
+ messageId: '2f052f7c-f694-4849-a7ed-a432f7ffa0a4',
+ originalTimestamp: '2021-10-28T14:03:50.503Z',
+ receivedAt: '2021-10-28T14:03:46.567Z',
+ recordId: '8',
+ request_ip: '10.1.94.92',
+ rudderId: 'c0f6843e-e3d6-4946-9752-fa339fbadef2',
+ sentAt: '2021-10-28T14:03:50.503Z',
+ timestamp: '2021-10-28T14:03:46.566Z',
+ traits: {
+ marketoGUID: '23',
+ administrative_unit: 'Minnesota',
+ am_pm: 'AM',
+ boolean: true,
+ firstname: 'Jacqueline',
+ pPower: 'AM',
+ userId: 'Jacqueline',
+ },
+ type: 'identify',
+ userId: 'lynnanderson@smith.net',
+ },
+ destination: {
+ ID: '1zia9wKshXt80YksLmUdJnr7IHI',
+ Name: 'test_marketo',
+ DestinationDefinition: {
+ ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6',
+ Name: 'MARKETO',
+ DisplayName: 'Marketo',
+ Config: {
+ destConfig: {
+ defaultConfig: [],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: [],
+ supportedMessageTypes: ['identify', 'page', 'screen', 'track'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'warehouse',
+ 'reactnative',
+ 'flutter',
+ 'cordova',
+ ],
+ supportsVisualMapper: true,
+ transformAt: 'processor',
+ transformAtV1: 'processor',
+ },
+ ResponseRules: null,
+ },
+ Config: {
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ accountId: 'marketo_acct_id_success',
+ rudderEventsMapping: [],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ libraries: [],
+ request: {
+ query: {},
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/customobjects/new_user.json',
+ headers: {
+ Authorization: 'Bearer access_token_success',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ action: 'createOrUpdate',
+ dedupeBy: 'dedupeFields',
+ input: [
+ {
+ administrative_unit: 'Minnesota',
+ am_pm: 'AM',
+ boolean: true,
+ firstname: 'Jacqueline',
+ pPower: 'AM',
+ userId: 'Jacqueline',
+ email: 'lynnanderson@smith.net',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ customActivityPrimaryKeyMap: [
+ {
+ from: 'Product Clicked',
+ to: 'name',
+ },
+ ],
+ customActivityEventMap: [
+ {
+ from: 'Product Clicked',
+ to: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ product_id: 'prod_1',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-12-17T21:00:59.176Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ {
+ from: 'product_id',
+ to: 'productId',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [
+ {
+ name: 'productId',
+ value: 'prod_1',
+ },
+ ],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ userId: 'user_id_success',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: false,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 4: ERROR - Request Failed for marketo, Access Token Expired',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ userId: 'user_id_success',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBerte',
+ Config: {
+ accountId: 'marketo_acct_id_token_failure',
+ clientId: 'marketo_acct_id_token_failure',
+ clientSecret: 'marketo_acct_id_token_failure',
+ trackAnonymousEvents: false,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 500,
+ error:
+ '{"message":"Request Failed for marketo, Access Token Expired (Retryable).During fetching auth token","destinationResponse":{"access_token":"access_token_expired","expires_in":0,"scope":"integrations@rudderstack.com","token_type":"bearer"}}',
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 5: ERROR - Request Failed for marketo, Access Token Expired',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ userId: 'user_id_success',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBerte',
+ Config: {
+ accountId: 'marketo_acct_id_failed',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: false,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 500,
+ error:
+ '{"message":"Request Failed for marketo, Access Token Expired (Retryable).During fetching auth token","destinationResponse":{"response":{"success":false,"errors":[{"code":"601","message":"Access Token Expired"}]},"status":200}}',
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'retryable',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 6: ERROR - Invalid traits value for Marketo',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ {
+ from: 'product_id',
+ to: 'productId',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Invalid traits value for Marketo',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 7: ERROR - Anonymous event tracking is turned off and invalid userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: false,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Anonymous event tracking is turned off and invalid userId',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 8: ERROR - Event is not mapped to Custom Activity',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Purchased',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event is not mapped to Custom Activity',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 9: ERROR - Primary Key value is invalid for the event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ product_name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Primary Key value is invalid for the event',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 10: ERROR - Message Type is not present. Aborting message.',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ product_name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Message Type is not present. Aborting message.',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 11: ERROR - Message type not supported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.1-beta.1',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '8.1.0',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ anonymousId: 'anon_id_success',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: {
+ All: true,
+ },
+ messageId: 'id1',
+ properties: {
+ product_name: 'Test Product',
+ },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'screen',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'leadScore',
+ to: 'customLeadScore',
+ },
+ ],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Message type not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'MARKETO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '00000000000000000000000000',
+ integrations: {
+ All: true,
+ },
+ traits: {
+ score: '0.5',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ {
+ from: 'name',
+ to: 'productName',
+ },
+ {
+ from: 'product_id',
+ to: 'productId',
+ },
+ ],
+ leadTraitMapping: [
+ {
+ from: 'score',
+ to: 'customLeadScore',
+ },
+ ],
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json',
+ headers: {
+ Authorization: 'Bearer access_token_success',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ action: 'createOrUpdate',
+ input: [
+ {
+ customLeadScore: '0.5',
+ id: 4,
+ },
+ ],
+ lookupField: 'id',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ channel: 'sources',
+ context: {
+ externalId: [
+ {
+ id: 'lynnanderson@smith.net',
+ identifierType: 'email',
+ type: 'MARKETO-new_user',
+ },
+ ],
+ traits: {
+ marketoGUID: '23',
+ administrative_unit: 'Minnesota',
+ am_pm: 'AM',
+ boolean: true,
+ firstname: 'Jacqueline',
+ pPower: 'AM',
+ userId: 'Jacqueline',
+ },
+ sources: {
+ batch_id: 'f5f240d0-0acb-46e0-b043-57fb0aabbadd',
+ job_id: '1zAj94bEy8komdqnYtSoDp0VmGs/Syncher',
+ job_run_id: 'c5tar6cqgmgmcjvupdhg',
+ task_id: 'tt_10_rows_check',
+ task_run_id: 'c5tar6cqgmgmcjvupdi0',
+ version: 'release.v1.6.8',
+ },
+ },
+ messageId: '2f052f7c-f694-4849-a7ed-a432f7ffa0a4',
+ originalTimestamp: '2021-10-28T14:03:50.503Z',
+ receivedAt: '2021-10-28T14:03:46.567Z',
+ recordId: '8',
+ request_ip: '10.1.94.92',
+ rudderId: 'c0f6843e-e3d6-4946-9752-fa339fbadef2',
+ sentAt: '2021-10-28T14:03:50.503Z',
+ timestamp: '2021-10-28T14:03:46.566Z',
+ type: 'identify',
+ userId: 'dummyMail@dummyDomain.com',
+ },
+ destination: {
+ ID: '1zia9wKshXt80YksLmUdJnr7IHI',
+ Name: 'test_marketo',
+ DestinationDefinition: {
+ ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6',
+ Name: 'MARKETO',
+ DisplayName: 'Marketo',
+ Config: {
+ destConfig: {
+ defaultConfig: [],
+ },
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ secretKeys: [],
+ supportedMessageTypes: ['identify', 'page', 'screen', 'track'],
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'warehouse',
+ 'reactnative',
+ 'flutter',
+ 'cordova',
+ ],
+ supportsVisualMapper: true,
+ transformAt: 'processor',
+ transformAtV1: 'processor',
+ },
+ ResponseRules: null,
+ },
+ Config: {
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ accountId: 'marketo_acct_id_success',
+ rudderEventsMapping: [],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ libraries: [],
+ request: {
+ query: {},
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint: 'https://marketo_acct_id_success.mktorest.com/rest/v1/leads.json',
+ headers: {
+ Authorization: 'Bearer access_token_success',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ action: 'createOrUpdate',
+ input: [{ id: 4, userId: 'dummyMail@dummyDomain.com' }],
+ lookupField: 'id',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/marketo/router/data.ts b/test/integrations/destinations/marketo/router/data.ts
new file mode 100644
index 00000000000..d187792ea80
--- /dev/null
+++ b/test/integrations/destinations/marketo/router/data.ts
@@ -0,0 +1,1430 @@
+export const data = [
+ {
+ name: 'marketo',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
+ locale: 'en-US',
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
+ timezone: 'Asia/Kolkata',
+ traits: { anonymousId: 'anon_id_success' },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: { All: true },
+ messageId: 'id1',
+ properties: { name: 'Test Product' },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-03-12T09:05:03.421Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [{ from: 'name', to: 'productName' }],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
+ locale: 'en-US',
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
+ timezone: 'Asia/Kolkata',
+ traits: { anonymousId: 'anon_id_success' },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: { All: true },
+ messageId: 'id1',
+ properties: { name: 'Test Product', product_id: 'prod_1' },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-12-17T21:00:59.176Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [{ from: 'name', to: 'productName' }],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2022-09-19T10:34:02.002Z',
+ userId: 'e17c5a5e-5e2f-430b-b497-fe3f1ea3a704',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '2.12.1',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'https://accounts.app.t2.broken.com/home',
+ path: '/home',
+ title: 'Home',
+ search: '',
+ tab_url: 'https://accounts.app.t2.broken.com/home',
+ referrer: 'https://ts50-cvii.core.broken.org/',
+ initial_referrer: 'https://ts50-cvii.core.broken.org/',
+ referring_domain: 'ts50-cvii.core.broken.org',
+ initial_referring_domain: 'ts50-cvii.core.broken.org',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1728,
+ height: 1117,
+ density: 2,
+ innerWidth: 1728,
+ innerHeight: 969,
+ },
+ traits: {
+ name: 'AM',
+ email: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ lastName: 'M',
+ firstName: 'A',
+ accountName: 'MACDEV',
+ billingName: 'g g',
+ companyName: 'macDev',
+ currentTier: 'Webinar Pro 250',
+ billingCycle: 'Annually',
+ lastBillingDate: '2022-06-29T09:40:42.000Z',
+ nextBillingDate: '2023-09-09T04:00:00.000Z',
+ subscriptionType: 'Webinar Pro 250',
+ subscriptionStatus: 'ACTIVE',
+ lastWebinarEventDate: '2022-09-15T20:00:00.000Z',
+ nextWebinarEventDate: '2022-09-16T06:15:00.000Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.12.1' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',
+ },
+ rudderId: '73dc83ef-587f-4077-90f3-c36083e64019',
+ messageId: '1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007',
+ timestamp: '2022-09-19T10:34:02.954Z',
+ receivedAt: '2022-09-19T10:34:02.956Z',
+ request_ip: '11.105.44.120',
+ anonymousId: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040',
+ integrations: { All: true },
+ originalTimestamp: '2022-09-19T10:34:02.000Z',
+ },
+ destination: {
+ Config: {
+ accountId: 'valid_account_broken_event',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ },
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2022-09-19T10:34:02.002Z',
+ userId: 'e17c5a5e-5e2f-430b-b497-fe3f1ea3a704',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '2.12.1',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'https://accounts.app.t2.broken.com/home',
+ path: '/home',
+ title: 'Home',
+ search: '',
+ tab_url: 'https://accounts.app.t2.broken.com/home',
+ referrer: 'https://ts50-cvii.core.broken.org/',
+ initial_referrer: 'https://ts50-cvii.core.broken.org/',
+ referring_domain: 'ts50-cvii.core.broken.org',
+ initial_referring_domain: 'ts50-cvii.core.broken.org',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1728,
+ height: 1117,
+ density: 2,
+ innerWidth: 1728,
+ innerHeight: 969,
+ },
+ traits: {
+ name: 'AM',
+ email: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ lastName: 'M',
+ firstName: 'A',
+ accountName: 'MACDEV',
+ billingName: 'g g',
+ companyName: 'macDev',
+ currentTier: 'Webinar Pro 250',
+ billingCycle: 'Annually',
+ lastBillingDate: '2022-06-29T09:40:42.000Z',
+ nextBillingDate: '2023-09-09T04:00:00.000Z',
+ subscriptionType: 'Webinar Pro 250',
+ subscriptionStatus: 'ACTIVE',
+ lastWebinarEventDate: '2022-09-15T20:00:00.000Z',
+ nextWebinarEventDate: '2022-09-16T06:15:00.000Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.12.1' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',
+ },
+ rudderId: '73dc83ef-587f-4077-90f3-c36083e64019',
+ messageId: '1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007',
+ timestamp: '2022-09-19T10:34:02.954Z',
+ receivedAt: '2022-09-19T10:34:02.956Z',
+ request_ip: '11.105.44.120',
+ anonymousId: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040',
+ integrations: { All: true },
+ originalTimestamp: '2022-09-19T10:34:02.000Z',
+ },
+ destination: {
+ Config: {
+ accountId: 'unhandled_status_code',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ },
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2022-09-19T10:34:02.002Z',
+ userId: 'e17c5a5e-5e2f-430b-b497-fe3f1ea3a704',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '2.12.1',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'https://accounts.app.t2.broken.com/home',
+ path: '/home',
+ title: 'Home',
+ search: '',
+ tab_url: 'https://accounts.app.t2.broken.com/home',
+ referrer: 'https://ts50-cvii.core.broken.org/',
+ initial_referrer: 'https://ts50-cvii.core.broken.org/',
+ referring_domain: 'ts50-cvii.core.broken.org',
+ initial_referring_domain: 'ts50-cvii.core.broken.org',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1728,
+ height: 1117,
+ density: 2,
+ innerWidth: 1728,
+ innerHeight: 969,
+ },
+ traits: {
+ name: 'AM',
+ email: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ lastName: 'M',
+ firstName: 'A',
+ accountName: 'MACDEV',
+ billingName: 'g g',
+ companyName: 'macDev',
+ currentTier: 'Webinar Pro 250',
+ billingCycle: 'Annually',
+ lastBillingDate: '2022-06-29T09:40:42.000Z',
+ nextBillingDate: '2023-09-09T04:00:00.000Z',
+ subscriptionType: 'Webinar Pro 250',
+ subscriptionStatus: 'ACTIVE',
+ lastWebinarEventDate: '2022-09-15T20:00:00.000Z',
+ nextWebinarEventDate: '2022-09-16T06:15:00.000Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '2.12.1' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36',
+ },
+ rudderId: '73dc83ef-587f-4077-90f3-c36083e64019',
+ messageId: '1663583642000200-e3f31c4c-6361-4f99-b643-7755303a6007',
+ timestamp: '2022-09-19T10:34:02.954Z',
+ receivedAt: '2022-09-19T10:34:02.956Z',
+ request_ip: '11.105.44.120',
+ anonymousId: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040',
+ integrations: { All: true },
+ originalTimestamp: '2022-09-19T10:34:02.000Z',
+ },
+ destination: {
+ Config: {
+ accountId: 'successful_identify_transformation',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ },
+ ],
+ destType: 'marketo',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { destInfo: { authKey: '1mMy5cqbtfuaKZv1IhVQKnBdVwe' }, jobId: 1, userId: 'u1' },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [{ from: 'name', to: 'productName' }],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { destInfo: { authKey: '1mMy5cqbtfuaKZv1IhVQKnBdVwe' }, jobId: 2, userId: 'u1' },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [{ from: 'name', to: 'productName' }],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmLd',
+ deleted: false,
+ createdAt: '2020-12-30T08:39:32.005Z',
+ updatedAt: '2021-02-03T16:22:31.374Z',
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batched: false,
+ statusCode: 400,
+ error:
+ '{"message":"Request Failed for marketo, Lookup field \'userId\' not found (Aborted).[Marketo Transformer]: During lead look up using email","destinationResponse":{"response":{"requestId":"142e4#1835b117b76","success":false,"errors":[{"code":"1006","message":"Lookup field \'userId\' not found"}]},"status":200}}',
+ statTags: { errorCategory: 'network', errorType: 'aborted' },
+ metadata: [
+ { destInfo: { authKey: '1mMy5cqbtfuaKZv1IhVQKnBdVke' }, jobId: 3, userId: 'u1' },
+ ],
+ destination: {
+ Config: {
+ accountId: 'valid_account_broken_event',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ {
+ batched: false,
+ statusCode: 400,
+ error:
+ '{"message":"Error occurred [Marketo Transformer]: During lead look up using email -> some other problem","destinationResponse":{"response":{"requestId":"142e4#1835b117b76","success":false,"errors":[{"code":"random_marketo_code","message":"some other problem"}]},"status":200}}',
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ meta: 'unhandledStatusCode',
+ },
+ destination: {
+ Config: {
+ accountId: 'unhandled_status_code',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ metadata: [
+ { destInfo: { authKey: '1mMy5cqbtfuaKZv1IhVQKnBdVke' }, jobId: 4, userId: 'u1' },
+ ],
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://successful_identify_transformation.mktorest.com/rest/v1/leads.json',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer access_token_success',
+ },
+ params: {},
+ body: {
+ JSON: {
+ action: 'createOrUpdate',
+ input: [
+ {
+ Email: '0c7b8b80-9c43-4f8e-b2d2-5e2448a25040@j.mail',
+ FirstName: 'A',
+ LastName: 'M',
+ id: 4,
+ userId: 'e17c5a5e-5e2f-430b-b497-fe3f1ea3a704',
+ },
+ ],
+ lookupField: 'id',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ { destInfo: { authKey: '1mMy5cqbtfuaKZv1IhVQKnBdVke' }, jobId: 5, userId: 'u1' },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accountId: 'successful_identify_transformation',
+ clientId: '504300cd-76b2-a7l4-bhle-90a07420nx73',
+ clientSecret: '3l3gJpzRsZagD6gu7tnTeKXz0bomLGnd',
+ trackAnonymousEvents: false,
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ { event: 'acq_signup_completed', marketoActivityId: '100026' },
+ { event: 'act_createwebinarform_submit', marketoActivityId: '100025' },
+ { event: 'act_presentation_style', marketoActivityId: '100025' },
+ { event: 'act_webinar_view', marketoActivityId: '100025' },
+ { event: 'act_webinar_join', marketoActivityId: '100025' },
+ { event: 'act_presentation_addteammember', marketoActivityId: '100025' },
+ {
+ event: 'act_engagement_discussions_savediscussion',
+ marketoActivityId: '100025',
+ },
+ { event: 'act_engagement_networking_savetime', marketoActivityId: '100025' },
+ ],
+ },
+ destinationDefinition: {
+ config: {
+ destConfig: {
+ defaultConfig: [
+ 'accountId',
+ 'clientId',
+ 'clientSecret',
+ 'trackAnonymousEvents',
+ 'rudderEventsMapping',
+ 'customActivityPropertyMap',
+ 'leadTraitMapping',
+ ],
+ },
+ secretKeys: ['clientSecret'],
+ excludeKeys: [],
+ includeKeys: [],
+ routerTransform: true,
+ supportedSourceTypes: [
+ 'android',
+ 'ios',
+ 'web',
+ 'unity',
+ 'amp',
+ 'cloud',
+ 'reactnative',
+ ],
+ },
+ responseRules: {
+ responseType: 'JSON',
+ rules: {
+ retryable: [
+ { success: 'false', 'errors.0.code': 600 },
+ { success: 'false', 'errors.0.code': 601 },
+ { success: 'false', 'errors.0.code': 602 },
+ { success: 'false', 'errors.0.code': 604 },
+ { success: 'false', 'errors.0.code': 606 },
+ { success: 'false', 'errors.0.code': 607 },
+ { success: 'false', 'errors.0.code': 608 },
+ { success: 'false', 'errors.0.code': 611 },
+ ],
+ abortable: [
+ { success: 'false', 'errors.0.code': 603 },
+ { success: 'false', 'errors.0.code': 605 },
+ { success: 'false', 'errors.0.code': 609 },
+ { success: 'false', 'errors.0.code': 610 },
+ ],
+ },
+ },
+ id: '1aIXqM806xAVm92nx07YwKbRrO9',
+ name: 'MARKETO',
+ displayName: 'Marketo',
+ createdAt: '2020-04-09T09:24:31.794Z',
+ updatedAt: '2021-01-11T11:03:28.103Z',
+ },
+ secretConfig: {},
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVke',
+ name: 'Marketo',
+ enabled: true,
+ workspaceId: '1TSN08muJTZwH8iCDmnnRt1pmMd',
+ deleted: false,
+ createdAt: '2022-02-10T08:39:32.005Z',
+ updatedAt: '2022-09-03T16:22:31.374Z',
+ transformations: [],
+ isConnectionEnabled: true,
+ isProcessorEnabled: true,
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'marketo',
+ description: 'processMetadataForRouter function specific test',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: 'anon_id_success',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'TestAppName',
+ namespace: 'com.android.sample',
+ version: '1.0',
+ },
+ device: {
+ id: 'anon_id_success',
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
+ locale: 'en-US',
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
+ timezone: 'Asia/Kolkata',
+ traits: { anonymousId: 'anon_id_success' },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
+ },
+ event: 'Product Clicked',
+ integrations: { All: true },
+ messageId: 'id1',
+ properties: { name: 'Test Product', product_id: 'prod_1' },
+ originalTimestamp: '2020-12-17T21:00:59.176Z',
+ type: 'track',
+ sentAt: '2020-12-17T21:00:59.176Z',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ { from: 'name', to: 'productName' },
+ { from: 'product_id', to: 'productId' },
+ ],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ metadata: [{ jobId: 1 }, { jobId: 1 }, { jobId: 1 }],
+ batched: false,
+ statusCode: 200,
+ },
+ ],
+ destType: 'marketo',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/activities/external.json',
+ headers: {
+ Authorization: 'Bearer access_token_success',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ input: [
+ {
+ activityDate: '2020-12-17T21:00:59.176Z',
+ activityTypeId: 100001,
+ attributes: [{ name: 'productId', value: 'prod_1' }],
+ leadId: 4,
+ primaryAttributeValue: 'Test Product',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [[{ jobId: 1 }, { jobId: 1 }, { jobId: 1 }]],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ accountId: 'marketo_acct_id_success',
+ clientId: 'marketo_client_id_success',
+ clientSecret: 'marketo_client_secret_success',
+ trackAnonymousEvents: true,
+ customActivityPropertyMap: [
+ { from: 'name', to: 'productName' },
+ { from: 'product_id', to: 'productId' },
+ ],
+ leadTraitMapping: [{ from: 'leadScore', to: 'customLeadScore' }],
+ createIfNotExist: true,
+ rudderEventsMapping: [
+ {
+ event: 'Product Clicked',
+ marketoPrimarykey: 'name',
+ marketoActivityId: '100001',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/marketo_bulk_upload/processor/data.ts b/test/integrations/destinations/marketo_bulk_upload/processor/data.ts
new file mode 100644
index 00000000000..90a3ca8584a
--- /dev/null
+++ b/test/integrations/destinations/marketo_bulk_upload/processor/data.ts
@@ -0,0 +1,598 @@
+export const data = [
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 'Quarterly Team+ Plan for Enuffsaid Media',
+ email: 'carlo@enuffsaid.media',
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '/fileUpload',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ name__c: 'Carlo Lombard',
+ email__c: 'carlo@enuffsaid.media',
+ plan__c: 'Quarterly Team+ Plan for Enuffsaid Media',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 'Quarterly Team+ Plan for Enuffsaid Media',
+ email: 'carlo@enuffsaid.media',
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type is required',
+ statTags: {
+ destType: 'MARKETO_BULK_UPLOAD',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 'Quarterly Team+ Plan for Enuffsaid Media',
+ email: 'carlo@enuffsaid.media',
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type track is not supported',
+ statTags: {
+ destType: 'MARKETO_BULK_UPLOAD',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 'Quarterly Team+ Plan for Enuffsaid Media',
+ email: 'carlo@enuffsaid.media',
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: '1',
+ },
+ {
+ to: 'email__c',
+ from: 'email1',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan1',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '/fileUpload',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 'Quarterly Team+ Plan for Enuffsaid Media',
+ email: 'carlo@enuffsaid.media',
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email1',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan1',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '/fileUpload',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ name__c: 'Carlo Lombard',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 1,
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '/fileUpload',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ name__c: 'Carlo Lombard',
+ plan__c: 1,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'marketo_bulk_upload',
+ description: 'Test 5: Any null or zero value will be passed through transform payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ traits: {
+ name: 'Carlo Lombard',
+ plan: 0,
+ id: null,
+ },
+ userId: 476335,
+ context: {
+ ip: '14.0.2.238',
+ page: {
+ url: 'enuffsaid.proposify.com',
+ path: '/settings',
+ method: 'POST',
+ referrer: 'https://enuffsaid.proposify.com/login',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '786dfec9-jfh',
+ messageId: '5d9bc6e2-ekjh',
+ },
+ destination: {
+ ID: '1mMy5cqbtfuaKZv1IhVQKnBdVwe',
+ Config: {
+ munchkinId: 'XXXX',
+ clientId: 'YYYY',
+ clientSecret: 'ZZZZ',
+ columnFieldsMapping: [
+ {
+ to: 'name__c',
+ from: 'name',
+ },
+ {
+ to: 'email__c',
+ from: 'email',
+ },
+ {
+ to: 'plan__c',
+ from: 'plan',
+ },
+ {
+ to: 'id',
+ from: 'id',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: '/fileUpload',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ name__c: 'Carlo Lombard',
+ plan__c: 0,
+ id: null,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/marketo_static_list/dataDelivery/data.ts b/test/integrations/destinations/marketo_static_list/dataDelivery/data.ts
index e3deebca9b3..f0275e329e3 100644
--- a/test/integrations/destinations/marketo_static_list/dataDelivery/data.ts
+++ b/test/integrations/destinations/marketo_static_list/dataDelivery/data.ts
@@ -1,368 +1,375 @@
export const data = [
{
- "name": "marketo_static_list",
- "description": "Test 0",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "type": "REST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=110&id=111&id=112",
- "method": "POST",
- "userId": "",
- "headers": {
- "Authorization": "Bearer Incorrect_token",
- "Content-Type": "application/json"
+ name: 'marketo_static_list',
+ description: 'Test 0',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ type: 'REST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=110&id=111&id=112',
+ method: 'POST',
+ userId: '',
+ headers: {
+ Authorization: 'Bearer Incorrect_token',
+ 'Content-Type': 'application/json',
},
- "body": {
- "FORM": {},
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {}
+ body: {
+ FORM: {},
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ files: {},
+ params: {
+ destination: 'marketo_static_list',
},
- "files": {},
- "params": {
- "destination": "marketo_static_list"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "requestId": "b6d1#18a8d2c10e7",
- "result": [
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ requestId: 'b6d1#18a8d2c10e7',
+ result: [
{
- "id": 110,
- "status": "skipped",
- "reasons": [
+ id: 110,
+ status: 'skipped',
+ reasons: [
{
- "code": "1015",
- "message": "Lead not in list"
- }
- ]
+ code: '1015',
+ message: 'Lead not in list',
+ },
+ ],
},
{
- "id": 111,
- "status": "removed"
+ id: 111,
+ status: 'removed',
},
{
- "id": 112,
- "status": "removed"
- }
+ id: 112,
+ status: 'removed',
+ },
],
- "success": true
+ success: true,
},
- "status": 200
+ status: 200,
},
- "status": 200
- }
- }
- }
- }
+ status: 200,
+ },
+ },
+ },
+ },
},
{
- "name": "marketo_static_list",
- "description": "Test 1",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "type": "REST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1&id=2&id=3",
- "method": "POST",
- "userId": "",
- "headers": {
- "Authorization": "Bearer Incorrect_token",
- "Content-Type": "application/json"
+ name: 'marketo_static_list',
+ description: 'Test 1',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ type: 'REST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1&id=2&id=3',
+ method: 'POST',
+ userId: '',
+ headers: {
+ Authorization: 'Bearer Incorrect_token',
+ 'Content-Type': 'application/json',
+ },
+ body: {
+ FORM: {},
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
},
- "body": {
- "FORM": {},
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {}
+ files: {},
+ params: {
+ destination: 'marketo_static_list',
},
- "files": {},
- "params": {
- "destination": "marketo_static_list"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 500,
- "body": {
- "output": {
- "status": 500,
- "message": "Request Failed for Marketo Static List, Access token invalid (Retryable).during Marketo Static List Response Handling",
- "destinationResponse": {
- "response": {
- "requestId": "68d8#1846058ee27",
- "success": false,
- "errors": [
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ message:
+ 'Request Failed for Marketo Static List, Access token invalid (Retryable).during Marketo Static List Response Handling',
+ destinationResponse: {
+ response: {
+ requestId: '68d8#1846058ee27',
+ success: false,
+ errors: [
{
- "code": "601",
- "message": "Access token invalid"
- }
- ]
+ code: '601',
+ message: 'Access token invalid',
+ },
+ ],
},
- "status": 200
+ status: 200,
},
- "statTags": {
- "destType": "MARKETO_STATIC_LIST",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
+ statTags: {
+ destType: 'MARKETO_STATIC_LIST',
+ errorCategory: 'network',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'retryable',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ },
+ },
+ },
},
{
- "name": "marketo_static_list",
- "description": "Test 2",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "type": "REST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1&id=2",
- "method": "POST",
- "userId": "",
- "headers": {
- "Authorization": "Bearer token",
- "Content-Type": "application/json"
+ name: 'marketo_static_list',
+ description: 'Test 2',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ type: 'REST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1&id=2',
+ method: 'POST',
+ userId: '',
+ headers: {
+ Authorization: 'Bearer token',
+ 'Content-Type': 'application/json',
},
- "body": {
- "FORM": {},
- "JSON": {
- "action": "createOrUpdate",
- "input": [
+ body: {
+ FORM: {},
+ JSON: {
+ action: 'createOrUpdate',
+ input: [
{
- "City": "Tokyo",
- "Country": "JP",
- "Email": "gabi29@gmail.com",
- "PostalCode": "100-0001",
- "Title": "Owner",
- "id": 1328328,
- "userId": "gabi_userId_45"
- }
+ City: 'Tokyo',
+ Country: 'JP',
+ Email: 'gabi29@gmail.com',
+ PostalCode: '100-0001',
+ Title: 'Owner',
+ id: 1328328,
+ userId: 'gabi_userId_45',
+ },
],
- "lookupField": "id"
+ lookupField: 'id',
},
- "JSON_ARRAY": {},
- "XML": {}
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ files: {},
+ params: {
+ destination: 'marketo_static_list',
},
- "files": {},
- "params": {
- "destination": "marketo_static_list"
- }
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "requestId": "12d3c#1846057dce2",
- "success": true,
- "result": [
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ requestId: '12d3c#1846057dce2',
+ success: true,
+ result: [
{
- "id": 1,
- "status": "added"
+ id: 1,
+ status: 'added',
},
{
- "id": 2,
- "status": "added"
- }
- ]
+ id: 2,
+ status: 'added',
+ },
+ ],
},
- "status": 200
- }
- }
- }
- }
- }
+ status: 200,
+ },
+ },
+ },
+ },
+ },
},
{
- "name": "marketo_static_list",
- "description": "Test 3",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "type": "REST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=3&id=4",
- "method": "POST",
- "userId": "",
- "headers": {
- "Authorization": "Bearer token",
- "Content-Type": "application/json"
+ name: 'marketo_static_list',
+ description: 'Test 3',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ type: 'REST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=3&id=4',
+ method: 'POST',
+ userId: '',
+ headers: {
+ Authorization: 'Bearer token',
+ 'Content-Type': 'application/json',
},
- "params": {},
- "body": {
- "FORM": {},
- "JSON": {
- "action": "createOrUpdate",
- "input": [
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ action: 'createOrUpdate',
+ input: [
{
- "City": "Tokyo",
- "Country": "JP",
- "Email": "gabi29@gmail.com",
- "PostalCode": "100-0001",
- "Title": "Owner",
- "id": 1328328,
- "userId": "gabi_userId_45"
+ City: 'Tokyo',
+ Country: 'JP',
+ Email: 'gabi29@gmail.com',
+ PostalCode: '100-0001',
+ Title: 'Owner',
+ id: 1328328,
+ userId: 'gabi_userId_45',
},
{
- "City": "Tokyo",
- "Country": "JP",
- "Email": "b@s.com",
- "PostalCode": "100-0001",
- "Title": "Owner",
- "id": 1328329,
- "userId": "ben_userId_45"
- }
+ City: 'Tokyo',
+ Country: 'JP',
+ Email: 'b@s.com',
+ PostalCode: '100-0001',
+ Title: 'Owner',
+ id: 1328329,
+ userId: 'ben_userId_45',
+ },
],
- "lookupField": "id"
+ lookupField: 'id',
},
- "JSON_ARRAY": {},
- "XML": {}
+ JSON_ARRAY: {},
+ XML: {},
},
- "files": {}
+ files: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 400,
- "body": {
- "output": {
- "destinationResponse": "",
- "message": "Request failed during: during Marketo Static List Response Handling, error: [{\"code\":\"1004\",\"message\":\"Lead not found\"}]",
- "statTags": {
- "destType": "MARKETO_STATIC_LIST",
- "errorCategory": "dataValidation",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "instrumentation",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: '',
+ message:
+ 'Request failed during: during Marketo Static List Response Handling, error: [{"code":"1004","message":"Lead not found"}]',
+ statTags: {
+ destType: 'MARKETO_STATIC_LIST',
+ errorCategory: 'dataValidation',
+ destinationId: 'Non-determininable',
+ workspaceId: 'Non-determininable',
+ errorType: 'instrumentation',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
},
- "status": 400
- }
- }
- }
- }
+ status: 400,
+ },
+ },
+ },
+ },
},
{
- "name": "marketo_static_list",
- "description": "Test 4",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "type": "REST",
- "endpoint": "https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=5&id=6",
- "method": "POST",
- "userId": "",
- "headers": {
- "Authorization": "Bearer token",
- "Content-Type": "application/json"
+ name: 'marketo_static_list',
+ description: 'Test 4',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ type: 'REST',
+ endpoint:
+ 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=5&id=6',
+ method: 'POST',
+ userId: '',
+ headers: {
+ Authorization: 'Bearer token',
+ 'Content-Type': 'application/json',
},
- "params": {},
- "body": {
- "FORM": {},
- "JSON": {
- "action": "createOrUpdate",
- "input": [
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ action: 'createOrUpdate',
+ input: [
{
- "City": "Tokyo",
- "Country": "JP",
- "Email": "gabi29@gmail.com",
- "PostalCode": "100-0001",
- "Title": "Owner",
- "id": 1328328,
- "userId": "gabi_userId_45"
+ City: 'Tokyo',
+ Country: 'JP',
+ Email: 'gabi29@gmail.com',
+ PostalCode: '100-0001',
+ Title: 'Owner',
+ id: 1328328,
+ userId: 'gabi_userId_45',
},
{
- "City": "Tokyo",
- "Country": "JP",
- "Email": "b@s.com",
- "PostalCode": "100-0001",
- "Title": "Owner",
- "id": 1328329,
- "userId": "ben_userId_45"
- }
+ City: 'Tokyo',
+ Country: 'JP',
+ Email: 'b@s.com',
+ PostalCode: '100-0001',
+ Title: 'Owner',
+ id: 1328329,
+ userId: 'ben_userId_45',
+ },
],
- "lookupField": "id"
+ lookupField: 'id',
},
- "JSON_ARRAY": {},
- "XML": {}
+ JSON_ARRAY: {},
+ XML: {},
},
- "files": {}
+ files: {},
},
- "method": "POST"
- }
+ method: 'POST',
+ },
},
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "requestId": "12d3c#1846057dce2",
- "result": {
- "id": 5,
- "status": "skipped",
- "reasons": [
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ requestId: '12d3c#1846057dce2',
+ result: {
+ id: 5,
+ status: 'skipped',
+ reasons: [
{
- "code": "1015",
- "message": "Lead not in list"
- }
- ]
+ code: '1015',
+ message: 'Lead not in list',
+ },
+ ],
},
- "success": true
+ success: true,
},
- "status": 200
- }
- }
- }
- }
- }
- }
-]
\ No newline at end of file
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/marketo_static_list/router/data.ts b/test/integrations/destinations/marketo_static_list/router/data.ts
index 840ad773b30..6525f7419d9 100644
--- a/test/integrations/destinations/marketo_static_list/router/data.ts
+++ b/test/integrations/destinations/marketo_static_list/router/data.ts
@@ -38,42 +38,15 @@ export const data = [
type: 'audiencelist',
properties: {
listData: {
- add: [
- {
- id: 1,
- },
- {
- id: 2,
- },
- {
- id: 3,
- },
- ],
- remove: [
- {
- id: 4,
- },
- {
- id: 5,
- },
- {
- id: 6,
- },
- ],
+ add: [{ id: 1 }, { id: 2 }, { id: 3 }],
+ remove: [{ id: 4 }, { id: 5 }, { id: 6 }],
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
destination: {
@@ -104,1074 +77,365 @@ export const data = [
properties: {
listData: {
add: [
- {
- id: 0,
- },
- {
- id: 1,
- },
- {
- id: 2,
- },
- {
- id: 3,
- },
- {
- id: 4,
- },
- {
- id: 5,
- },
- {
- id: 6,
- },
- {
- id: 7,
- },
- {
- id: 8,
- },
- {
- id: 9,
- },
- {
- id: 10,
- },
- {
- id: 11,
- },
- {
- id: 12,
- },
- {
- id: 13,
- },
- {
- id: 14,
- },
- {
- id: 15,
- },
- {
- id: 16,
- },
- {
- id: 17,
- },
- {
- id: 18,
- },
- {
- id: 19,
- },
- {
- id: 20,
- },
- {
- id: 21,
- },
- {
- id: 22,
- },
- {
- id: 23,
- },
- {
- id: 24,
- },
- {
- id: 25,
- },
- {
- id: 26,
- },
- {
- id: 27,
- },
- {
- id: 28,
- },
- {
- id: 29,
- },
- {
- id: 30,
- },
- {
- id: 31,
- },
- {
- id: 32,
- },
- {
- id: 33,
- },
- {
- id: 34,
- },
- {
- id: 35,
- },
- {
- id: 36,
- },
- {
- id: 37,
- },
- {
- id: 38,
- },
- {
- id: 39,
- },
- {
- id: 40,
- },
- {
- id: 41,
- },
- {
- id: 42,
- },
- {
- id: 43,
- },
- {
- id: 44,
- },
- {
- id: 45,
- },
- {
- id: 46,
- },
- {
- id: 47,
- },
- {
- id: 48,
- },
- {
- id: 49,
- },
- {
- id: 50,
- },
- {
- id: 51,
- },
- {
- id: 52,
- },
- {
- id: 53,
- },
- {
- id: 54,
- },
- {
- id: 55,
- },
- {
- id: 56,
- },
- {
- id: 57,
- },
- {
- id: 58,
- },
- {
- id: 59,
- },
- {
- id: 60,
- },
- {
- id: 61,
- },
- {
- id: 62,
- },
- {
- id: 63,
- },
- {
- id: 64,
- },
- {
- id: 65,
- },
- {
- id: 66,
- },
- {
- id: 67,
- },
- {
- id: 68,
- },
- {
- id: 69,
- },
- {
- id: 70,
- },
- {
- id: 71,
- },
- {
- id: 72,
- },
- {
- id: 73,
- },
- {
- id: 74,
- },
- {
- id: 75,
- },
- {
- id: 76,
- },
- {
- id: 77,
- },
- {
- id: 78,
- },
- {
- id: 79,
- },
- {
- id: 80,
- },
- {
- id: 81,
- },
- {
- id: 82,
- },
- {
- id: 83,
- },
- {
- id: 84,
- },
- {
- id: 85,
- },
- {
- id: 86,
- },
- {
- id: 87,
- },
- {
- id: 88,
- },
- {
- id: 89,
- },
- {
- id: 90,
- },
- {
- id: 91,
- },
- {
- id: 92,
- },
- {
- id: 93,
- },
- {
- id: 94,
- },
- {
- id: 95,
- },
- {
- id: 96,
- },
- {
- id: 97,
- },
- {
- id: 98,
- },
- {
- id: 99,
- },
- {
- id: 100,
- },
- {
- id: 101,
- },
- {
- id: 102,
- },
- {
- id: 103,
- },
- {
- id: 104,
- },
- {
- id: 105,
- },
- {
- id: 106,
- },
- {
- id: 107,
- },
- {
- id: 108,
- },
- {
- id: 109,
- },
- {
- id: 110,
- },
- {
- id: 111,
- },
- {
- id: 112,
- },
- {
- id: 113,
- },
- {
- id: 114,
- },
- {
- id: 115,
- },
- {
- id: 116,
- },
- {
- id: 117,
- },
- {
- id: 118,
- },
- {
- id: 119,
- },
- {
- id: 120,
- },
- {
- id: 121,
- },
- {
- id: 122,
- },
- {
- id: 123,
- },
- {
- id: 124,
- },
- {
- id: 125,
- },
- {
- id: 126,
- },
- {
- id: 127,
- },
- {
- id: 128,
- },
- {
- id: 129,
- },
- {
- id: 130,
- },
- {
- id: 131,
- },
- {
- id: 132,
- },
- {
- id: 133,
- },
- {
- id: 134,
- },
- {
- id: 135,
- },
- {
- id: 136,
- },
- {
- id: 137,
- },
- {
- id: 138,
- },
- {
- id: 139,
- },
- {
- id: 140,
- },
- {
- id: 141,
- },
- {
- id: 142,
- },
- {
- id: 143,
- },
- {
- id: 144,
- },
- {
- id: 145,
- },
- {
- id: 146,
- },
- {
- id: 147,
- },
- {
- id: 148,
- },
- {
- id: 149,
- },
- {
- id: 150,
- },
- {
- id: 151,
- },
- {
- id: 152,
- },
- {
- id: 153,
- },
- {
- id: 154,
- },
- {
- id: 155,
- },
- {
- id: 156,
- },
- {
- id: 157,
- },
- {
- id: 158,
- },
- {
- id: 159,
- },
- {
- id: 160,
- },
- {
- id: 161,
- },
- {
- id: 162,
- },
- {
- id: 163,
- },
- {
- id: 164,
- },
- {
- id: 165,
- },
- {
- id: 166,
- },
- {
- id: 167,
- },
- {
- id: 168,
- },
- {
- id: 169,
- },
- {
- id: 170,
- },
- {
- id: 171,
- },
- {
- id: 172,
- },
- {
- id: 173,
- },
- {
- id: 174,
- },
- {
- id: 175,
- },
- {
- id: 176,
- },
- {
- id: 177,
- },
- {
- id: 178,
- },
- {
- id: 179,
- },
- {
- id: 180,
- },
- {
- id: 181,
- },
- {
- id: 182,
- },
- {
- id: 183,
- },
- {
- id: 184,
- },
- {
- id: 185,
- },
- {
- id: 186,
- },
- {
- id: 187,
- },
- {
- id: 188,
- },
- {
- id: 189,
- },
- {
- id: 190,
- },
- {
- id: 191,
- },
- {
- id: 192,
- },
- {
- id: 193,
- },
- {
- id: 194,
- },
- {
- id: 195,
- },
- {
- id: 196,
- },
- {
- id: 197,
- },
- {
- id: 198,
- },
- {
- id: 199,
- },
- {
- id: 200,
- },
- {
- id: 201,
- },
- {
- id: 202,
- },
- {
- id: 203,
- },
- {
- id: 204,
- },
- {
- id: 205,
- },
- {
- id: 206,
- },
- {
- id: 207,
- },
- {
- id: 208,
- },
- {
- id: 209,
- },
- {
- id: 210,
- },
- {
- id: 211,
- },
- {
- id: 212,
- },
- {
- id: 213,
- },
- {
- id: 214,
- },
- {
- id: 215,
- },
- {
- id: 216,
- },
- {
- id: 217,
- },
- {
- id: 218,
- },
- {
- id: 219,
- },
- {
- id: 220,
- },
- {
- id: 221,
- },
- {
- id: 222,
- },
- {
- id: 223,
- },
- {
- id: 224,
- },
- {
- id: 225,
- },
- {
- id: 226,
- },
- {
- id: 227,
- },
- {
- id: 228,
- },
- {
- id: 229,
- },
- {
- id: 230,
- },
- {
- id: 231,
- },
- {
- id: 232,
- },
- {
- id: 233,
- },
- {
- id: 234,
- },
- {
- id: 235,
- },
- {
- id: 236,
- },
- {
- id: 237,
- },
- {
- id: 238,
- },
- {
- id: 239,
- },
- {
- id: 240,
- },
- {
- id: 241,
- },
- {
- id: 242,
- },
- {
- id: 243,
- },
- {
- id: 244,
- },
- {
- id: 245,
- },
- {
- id: 246,
- },
- {
- id: 247,
- },
- {
- id: 248,
- },
- {
- id: 249,
- },
- {
- id: 250,
- },
- {
- id: 251,
- },
- {
- id: 252,
- },
- {
- id: 253,
- },
- {
- id: 254,
- },
- {
- id: 255,
- },
- {
- id: 256,
- },
- {
- id: 257,
- },
- {
- id: 258,
- },
- {
- id: 259,
- },
- {
- id: 260,
- },
- {
- id: 261,
- },
- {
- id: 262,
- },
- {
- id: 263,
- },
- {
- id: 264,
- },
- {
- id: 265,
- },
- {
- id: 266,
- },
- {
- id: 267,
- },
- {
- id: 268,
- },
- {
- id: 269,
- },
- {
- id: 270,
- },
- {
- id: 271,
- },
- {
- id: 272,
- },
- {
- id: 273,
- },
- {
- id: 274,
- },
- {
- id: 275,
- },
- {
- id: 276,
- },
- {
- id: 277,
- },
- {
- id: 278,
- },
- {
- id: 279,
- },
- {
- id: 280,
- },
- {
- id: 281,
- },
- {
- id: 282,
- },
- {
- id: 283,
- },
- {
- id: 284,
- },
- {
- id: 285,
- },
- {
- id: 286,
- },
- {
- id: 287,
- },
- {
- id: 288,
- },
- {
- id: 289,
- },
- {
- id: 290,
- },
- {
- id: 291,
- },
- {
- id: 292,
- },
- {
- id: 293,
- },
- {
- id: 294,
- },
- {
- id: 295,
- },
- {
- id: 296,
- },
- {
- id: 297,
- },
- {
- id: 298,
- },
- {
- id: 299,
- },
- {
- id: 300,
- },
- {
- id: 301,
- },
- {
- id: 302,
- },
- {
- id: 303,
- },
- {
- id: 304,
- },
- {
- id: 305,
- },
- {
- id: 306,
- },
- {
- id: 307,
- },
- {
- id: 308,
- },
- {
- id: 309,
- },
- {
- id: 310,
- },
- {
- id: 311,
- },
- {
- id: 312,
- },
- {
- id: 313,
- },
- {
- id: 314,
- },
- {
- id: 315,
- },
- {
- id: 316,
- },
- {
- id: 317,
- },
- {
- id: 318,
- },
- {
- id: 319,
- },
- {
- id: 320,
- },
- {
- id: 321,
- },
- {
- id: 322,
- },
- {
- id: 323,
- },
- {
- id: 324,
- },
- {
- id: 325,
- },
- {
- id: 326,
- },
- {
- id: 327,
- },
- {
- id: 328,
- },
- {
- id: 329,
- },
- {
- id: 330,
- },
- {
- id: 331,
- },
- {
- id: 332,
- },
- {
- id: 333,
- },
- {
- id: 334,
- },
- {
- id: 335,
- },
- {
- id: 336,
- },
- {
- id: 337,
- },
- {
- id: 338,
- },
- {
- id: 339,
- },
- {
- id: 340,
- },
- {
- id: 341,
- },
- {
- id: 342,
- },
- {
- id: 343,
- },
- {
- id: 344,
- },
- {
- id: 345,
- },
- {
- id: 346,
- },
- {
- id: 347,
- },
- {
- id: 348,
- },
- {
- id: 349,
- },
- {
- id: 350,
- },
+ { id: 0 },
+ { id: 1 },
+ { id: 2 },
+ { id: 3 },
+ { id: 4 },
+ { id: 5 },
+ { id: 6 },
+ { id: 7 },
+ { id: 8 },
+ { id: 9 },
+ { id: 10 },
+ { id: 11 },
+ { id: 12 },
+ { id: 13 },
+ { id: 14 },
+ { id: 15 },
+ { id: 16 },
+ { id: 17 },
+ { id: 18 },
+ { id: 19 },
+ { id: 20 },
+ { id: 21 },
+ { id: 22 },
+ { id: 23 },
+ { id: 24 },
+ { id: 25 },
+ { id: 26 },
+ { id: 27 },
+ { id: 28 },
+ { id: 29 },
+ { id: 30 },
+ { id: 31 },
+ { id: 32 },
+ { id: 33 },
+ { id: 34 },
+ { id: 35 },
+ { id: 36 },
+ { id: 37 },
+ { id: 38 },
+ { id: 39 },
+ { id: 40 },
+ { id: 41 },
+ { id: 42 },
+ { id: 43 },
+ { id: 44 },
+ { id: 45 },
+ { id: 46 },
+ { id: 47 },
+ { id: 48 },
+ { id: 49 },
+ { id: 50 },
+ { id: 51 },
+ { id: 52 },
+ { id: 53 },
+ { id: 54 },
+ { id: 55 },
+ { id: 56 },
+ { id: 57 },
+ { id: 58 },
+ { id: 59 },
+ { id: 60 },
+ { id: 61 },
+ { id: 62 },
+ { id: 63 },
+ { id: 64 },
+ { id: 65 },
+ { id: 66 },
+ { id: 67 },
+ { id: 68 },
+ { id: 69 },
+ { id: 70 },
+ { id: 71 },
+ { id: 72 },
+ { id: 73 },
+ { id: 74 },
+ { id: 75 },
+ { id: 76 },
+ { id: 77 },
+ { id: 78 },
+ { id: 79 },
+ { id: 80 },
+ { id: 81 },
+ { id: 82 },
+ { id: 83 },
+ { id: 84 },
+ { id: 85 },
+ { id: 86 },
+ { id: 87 },
+ { id: 88 },
+ { id: 89 },
+ { id: 90 },
+ { id: 91 },
+ { id: 92 },
+ { id: 93 },
+ { id: 94 },
+ { id: 95 },
+ { id: 96 },
+ { id: 97 },
+ { id: 98 },
+ { id: 99 },
+ { id: 100 },
+ { id: 101 },
+ { id: 102 },
+ { id: 103 },
+ { id: 104 },
+ { id: 105 },
+ { id: 106 },
+ { id: 107 },
+ { id: 108 },
+ { id: 109 },
+ { id: 110 },
+ { id: 111 },
+ { id: 112 },
+ { id: 113 },
+ { id: 114 },
+ { id: 115 },
+ { id: 116 },
+ { id: 117 },
+ { id: 118 },
+ { id: 119 },
+ { id: 120 },
+ { id: 121 },
+ { id: 122 },
+ { id: 123 },
+ { id: 124 },
+ { id: 125 },
+ { id: 126 },
+ { id: 127 },
+ { id: 128 },
+ { id: 129 },
+ { id: 130 },
+ { id: 131 },
+ { id: 132 },
+ { id: 133 },
+ { id: 134 },
+ { id: 135 },
+ { id: 136 },
+ { id: 137 },
+ { id: 138 },
+ { id: 139 },
+ { id: 140 },
+ { id: 141 },
+ { id: 142 },
+ { id: 143 },
+ { id: 144 },
+ { id: 145 },
+ { id: 146 },
+ { id: 147 },
+ { id: 148 },
+ { id: 149 },
+ { id: 150 },
+ { id: 151 },
+ { id: 152 },
+ { id: 153 },
+ { id: 154 },
+ { id: 155 },
+ { id: 156 },
+ { id: 157 },
+ { id: 158 },
+ { id: 159 },
+ { id: 160 },
+ { id: 161 },
+ { id: 162 },
+ { id: 163 },
+ { id: 164 },
+ { id: 165 },
+ { id: 166 },
+ { id: 167 },
+ { id: 168 },
+ { id: 169 },
+ { id: 170 },
+ { id: 171 },
+ { id: 172 },
+ { id: 173 },
+ { id: 174 },
+ { id: 175 },
+ { id: 176 },
+ { id: 177 },
+ { id: 178 },
+ { id: 179 },
+ { id: 180 },
+ { id: 181 },
+ { id: 182 },
+ { id: 183 },
+ { id: 184 },
+ { id: 185 },
+ { id: 186 },
+ { id: 187 },
+ { id: 188 },
+ { id: 189 },
+ { id: 190 },
+ { id: 191 },
+ { id: 192 },
+ { id: 193 },
+ { id: 194 },
+ { id: 195 },
+ { id: 196 },
+ { id: 197 },
+ { id: 198 },
+ { id: 199 },
+ { id: 200 },
+ { id: 201 },
+ { id: 202 },
+ { id: 203 },
+ { id: 204 },
+ { id: 205 },
+ { id: 206 },
+ { id: 207 },
+ { id: 208 },
+ { id: 209 },
+ { id: 210 },
+ { id: 211 },
+ { id: 212 },
+ { id: 213 },
+ { id: 214 },
+ { id: 215 },
+ { id: 216 },
+ { id: 217 },
+ { id: 218 },
+ { id: 219 },
+ { id: 220 },
+ { id: 221 },
+ { id: 222 },
+ { id: 223 },
+ { id: 224 },
+ { id: 225 },
+ { id: 226 },
+ { id: 227 },
+ { id: 228 },
+ { id: 229 },
+ { id: 230 },
+ { id: 231 },
+ { id: 232 },
+ { id: 233 },
+ { id: 234 },
+ { id: 235 },
+ { id: 236 },
+ { id: 237 },
+ { id: 238 },
+ { id: 239 },
+ { id: 240 },
+ { id: 241 },
+ { id: 242 },
+ { id: 243 },
+ { id: 244 },
+ { id: 245 },
+ { id: 246 },
+ { id: 247 },
+ { id: 248 },
+ { id: 249 },
+ { id: 250 },
+ { id: 251 },
+ { id: 252 },
+ { id: 253 },
+ { id: 254 },
+ { id: 255 },
+ { id: 256 },
+ { id: 257 },
+ { id: 258 },
+ { id: 259 },
+ { id: 260 },
+ { id: 261 },
+ { id: 262 },
+ { id: 263 },
+ { id: 264 },
+ { id: 265 },
+ { id: 266 },
+ { id: 267 },
+ { id: 268 },
+ { id: 269 },
+ { id: 270 },
+ { id: 271 },
+ { id: 272 },
+ { id: 273 },
+ { id: 274 },
+ { id: 275 },
+ { id: 276 },
+ { id: 277 },
+ { id: 278 },
+ { id: 279 },
+ { id: 280 },
+ { id: 281 },
+ { id: 282 },
+ { id: 283 },
+ { id: 284 },
+ { id: 285 },
+ { id: 286 },
+ { id: 287 },
+ { id: 288 },
+ { id: 289 },
+ { id: 290 },
+ { id: 291 },
+ { id: 292 },
+ { id: 293 },
+ { id: 294 },
+ { id: 295 },
+ { id: 296 },
+ { id: 297 },
+ { id: 298 },
+ { id: 299 },
+ { id: 300 },
+ { id: 301 },
+ { id: 302 },
+ { id: 303 },
+ { id: 304 },
+ { id: 305 },
+ { id: 306 },
+ { id: 307 },
+ { id: 308 },
+ { id: 309 },
+ { id: 310 },
+ { id: 311 },
+ { id: 312 },
+ { id: 313 },
+ { id: 314 },
+ { id: 315 },
+ { id: 316 },
+ { id: 317 },
+ { id: 318 },
+ { id: 319 },
+ { id: 320 },
+ { id: 321 },
+ { id: 322 },
+ { id: 323 },
+ { id: 324 },
+ { id: 325 },
+ { id: 326 },
+ { id: 327 },
+ { id: 328 },
+ { id: 329 },
+ { id: 330 },
+ { id: 331 },
+ { id: 332 },
+ { id: 333 },
+ { id: 334 },
+ { id: 335 },
+ { id: 336 },
+ { id: 337 },
+ { id: 338 },
+ { id: 339 },
+ { id: 340 },
+ { id: 341 },
+ { id: 342 },
+ { id: 343 },
+ { id: 344 },
+ { id: 345 },
+ { id: 346 },
+ { id: 347 },
+ { id: 348 },
+ { id: 349 },
+ { id: 350 },
],
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'marketo_static_list',
@@ -1197,12 +461,7 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -1216,22 +475,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- destInfo: {
- authKey: '1zia9wKshXt80YksLmUdJnr7IHI',
- },
- jobId: 1,
- },
+ { destInfo: { authKey: '1zia9wKshXt80YksLmUdJnr7IHI' }, jobId: 1, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -1269,12 +518,7 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -1288,22 +532,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- destInfo: {
- authKey: '1zia9wKshXt80YksLmUdJnr7IHI',
- },
- jobId: 2,
- },
+ { destInfo: { authKey: '1zia9wKshXt80YksLmUdJnr7IHI' }, jobId: 2, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -1367,9 +601,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1001,
- },
+ fields: { id: 1001 },
channel: 'sources',
context: {
sources: {
@@ -1378,20 +610,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- identifierType: 'id',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', identifierType: 'id' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
destination: {
@@ -1417,9 +642,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1002,
- },
+ fields: { id: 1002 },
channel: 'sources',
context: {
sources: {
@@ -1428,20 +651,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- identifierType: 'id',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', identifierType: 'id' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
destination: {
@@ -1467,9 +683,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1003,
- },
+ fields: { id: 1003 },
channel: 'sources',
context: {
sources: {
@@ -1478,20 +692,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- identifierType: 'id',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', identifierType: 'id' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
{
destination: {
@@ -1518,12 +725,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- identifierType: 'id',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ identifierType: 'id', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -1534,14 +736,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2001',
- },
+ fields: { id: '2001' },
type: 'record',
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
},
{
destination: {
@@ -1568,12 +766,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- identifierType: 'id',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ identifierType: 'id', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -1584,14 +777,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2002',
- },
+ fields: { id: '2002' },
type: 'record',
},
- metadata: {
- jobId: 5,
- },
+ metadata: { jobId: 5, userId: 'u1' },
},
{
destination: {
@@ -1618,12 +807,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- identifierType: 'id',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ identifierType: 'id', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -1634,14 +818,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2003',
- },
+ fields: { id: '2003' },
type: 'record',
},
- metadata: {
- jobId: 6,
- },
+ metadata: { jobId: 6, userId: 'u1' },
},
{
destination: {
@@ -1671,42 +851,15 @@ export const data = [
type: 'audiencelist',
properties: {
listData: {
- add: [
- {
- id: 101,
- },
- {
- id: 102,
- },
- {
- id: 103,
- },
- ],
- remove: [
- {
- id: 4,
- },
- {
- id: 5,
- },
- {
- id: 6,
- },
- ],
+ add: [{ id: 101 }, { id: 102 }, { id: 103 }],
+ remove: [{ id: 4 }, { id: 5 }, { id: 6 }],
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 7,
- },
+ metadata: { jobId: 7, userId: 'u1' },
},
{
destination: {
@@ -1737,1074 +890,365 @@ export const data = [
properties: {
listData: {
add: [
- {
- id: 0,
- },
- {
- id: 1,
- },
- {
- id: 2,
- },
- {
- id: 3,
- },
- {
- id: 4,
- },
- {
- id: 5,
- },
- {
- id: 6,
- },
- {
- id: 7,
- },
- {
- id: 8,
- },
- {
- id: 9,
- },
- {
- id: 10,
- },
- {
- id: 11,
- },
- {
- id: 12,
- },
- {
- id: 13,
- },
- {
- id: 14,
- },
- {
- id: 15,
- },
- {
- id: 16,
- },
- {
- id: 17,
- },
- {
- id: 18,
- },
- {
- id: 19,
- },
- {
- id: 20,
- },
- {
- id: 21,
- },
- {
- id: 22,
- },
- {
- id: 23,
- },
- {
- id: 24,
- },
- {
- id: 25,
- },
- {
- id: 26,
- },
- {
- id: 27,
- },
- {
- id: 28,
- },
- {
- id: 29,
- },
- {
- id: 30,
- },
- {
- id: 31,
- },
- {
- id: 32,
- },
- {
- id: 33,
- },
- {
- id: 34,
- },
- {
- id: 35,
- },
- {
- id: 36,
- },
- {
- id: 37,
- },
- {
- id: 38,
- },
- {
- id: 39,
- },
- {
- id: 40,
- },
- {
- id: 41,
- },
- {
- id: 42,
- },
- {
- id: 43,
- },
- {
- id: 44,
- },
- {
- id: 45,
- },
- {
- id: 46,
- },
- {
- id: 47,
- },
- {
- id: 48,
- },
- {
- id: 49,
- },
- {
- id: 50,
- },
- {
- id: 51,
- },
- {
- id: 52,
- },
- {
- id: 53,
- },
- {
- id: 54,
- },
- {
- id: 55,
- },
- {
- id: 56,
- },
- {
- id: 57,
- },
- {
- id: 58,
- },
- {
- id: 59,
- },
- {
- id: 60,
- },
- {
- id: 61,
- },
- {
- id: 62,
- },
- {
- id: 63,
- },
- {
- id: 64,
- },
- {
- id: 65,
- },
- {
- id: 66,
- },
- {
- id: 67,
- },
- {
- id: 68,
- },
- {
- id: 69,
- },
- {
- id: 70,
- },
- {
- id: 71,
- },
- {
- id: 72,
- },
- {
- id: 73,
- },
- {
- id: 74,
- },
- {
- id: 75,
- },
- {
- id: 76,
- },
- {
- id: 77,
- },
- {
- id: 78,
- },
- {
- id: 79,
- },
- {
- id: 80,
- },
- {
- id: 81,
- },
- {
- id: 82,
- },
- {
- id: 83,
- },
- {
- id: 84,
- },
- {
- id: 85,
- },
- {
- id: 86,
- },
- {
- id: 87,
- },
- {
- id: 88,
- },
- {
- id: 89,
- },
- {
- id: 90,
- },
- {
- id: 91,
- },
- {
- id: 92,
- },
- {
- id: 93,
- },
- {
- id: 94,
- },
- {
- id: 95,
- },
- {
- id: 96,
- },
- {
- id: 97,
- },
- {
- id: 98,
- },
- {
- id: 99,
- },
- {
- id: 100,
- },
- {
- id: 101,
- },
- {
- id: 102,
- },
- {
- id: 103,
- },
- {
- id: 104,
- },
- {
- id: 105,
- },
- {
- id: 106,
- },
- {
- id: 107,
- },
- {
- id: 108,
- },
- {
- id: 109,
- },
- {
- id: 110,
- },
- {
- id: 111,
- },
- {
- id: 112,
- },
- {
- id: 113,
- },
- {
- id: 114,
- },
- {
- id: 115,
- },
- {
- id: 116,
- },
- {
- id: 117,
- },
- {
- id: 118,
- },
- {
- id: 119,
- },
- {
- id: 120,
- },
- {
- id: 121,
- },
- {
- id: 122,
- },
- {
- id: 123,
- },
- {
- id: 124,
- },
- {
- id: 125,
- },
- {
- id: 126,
- },
- {
- id: 127,
- },
- {
- id: 128,
- },
- {
- id: 129,
- },
- {
- id: 130,
- },
- {
- id: 131,
- },
- {
- id: 132,
- },
- {
- id: 133,
- },
- {
- id: 134,
- },
- {
- id: 135,
- },
- {
- id: 136,
- },
- {
- id: 137,
- },
- {
- id: 138,
- },
- {
- id: 139,
- },
- {
- id: 140,
- },
- {
- id: 141,
- },
- {
- id: 142,
- },
- {
- id: 143,
- },
- {
- id: 144,
- },
- {
- id: 145,
- },
- {
- id: 146,
- },
- {
- id: 147,
- },
- {
- id: 148,
- },
- {
- id: 149,
- },
- {
- id: 150,
- },
- {
- id: 151,
- },
- {
- id: 152,
- },
- {
- id: 153,
- },
- {
- id: 154,
- },
- {
- id: 155,
- },
- {
- id: 156,
- },
- {
- id: 157,
- },
- {
- id: 158,
- },
- {
- id: 159,
- },
- {
- id: 160,
- },
- {
- id: 161,
- },
- {
- id: 162,
- },
- {
- id: 163,
- },
- {
- id: 164,
- },
- {
- id: 165,
- },
- {
- id: 166,
- },
- {
- id: 167,
- },
- {
- id: 168,
- },
- {
- id: 169,
- },
- {
- id: 170,
- },
- {
- id: 171,
- },
- {
- id: 172,
- },
- {
- id: 173,
- },
- {
- id: 174,
- },
- {
- id: 175,
- },
- {
- id: 176,
- },
- {
- id: 177,
- },
- {
- id: 178,
- },
- {
- id: 179,
- },
- {
- id: 180,
- },
- {
- id: 181,
- },
- {
- id: 182,
- },
- {
- id: 183,
- },
- {
- id: 184,
- },
- {
- id: 185,
- },
- {
- id: 186,
- },
- {
- id: 187,
- },
- {
- id: 188,
- },
- {
- id: 189,
- },
- {
- id: 190,
- },
- {
- id: 191,
- },
- {
- id: 192,
- },
- {
- id: 193,
- },
- {
- id: 194,
- },
- {
- id: 195,
- },
- {
- id: 196,
- },
- {
- id: 197,
- },
- {
- id: 198,
- },
- {
- id: 199,
- },
- {
- id: 200,
- },
- {
- id: 201,
- },
- {
- id: 202,
- },
- {
- id: 203,
- },
- {
- id: 204,
- },
- {
- id: 205,
- },
- {
- id: 206,
- },
- {
- id: 207,
- },
- {
- id: 208,
- },
- {
- id: 209,
- },
- {
- id: 210,
- },
- {
- id: 211,
- },
- {
- id: 212,
- },
- {
- id: 213,
- },
- {
- id: 214,
- },
- {
- id: 215,
- },
- {
- id: 216,
- },
- {
- id: 217,
- },
- {
- id: 218,
- },
- {
- id: 219,
- },
- {
- id: 220,
- },
- {
- id: 221,
- },
- {
- id: 222,
- },
- {
- id: 223,
- },
- {
- id: 224,
- },
- {
- id: 225,
- },
- {
- id: 226,
- },
- {
- id: 227,
- },
- {
- id: 228,
- },
- {
- id: 229,
- },
- {
- id: 230,
- },
- {
- id: 231,
- },
- {
- id: 232,
- },
- {
- id: 233,
- },
- {
- id: 234,
- },
- {
- id: 235,
- },
- {
- id: 236,
- },
- {
- id: 237,
- },
- {
- id: 238,
- },
- {
- id: 239,
- },
- {
- id: 240,
- },
- {
- id: 241,
- },
- {
- id: 242,
- },
- {
- id: 243,
- },
- {
- id: 244,
- },
- {
- id: 245,
- },
- {
- id: 246,
- },
- {
- id: 247,
- },
- {
- id: 248,
- },
- {
- id: 249,
- },
- {
- id: 250,
- },
- {
- id: 251,
- },
- {
- id: 252,
- },
- {
- id: 253,
- },
- {
- id: 254,
- },
- {
- id: 255,
- },
- {
- id: 256,
- },
- {
- id: 257,
- },
- {
- id: 258,
- },
- {
- id: 259,
- },
- {
- id: 260,
- },
- {
- id: 261,
- },
- {
- id: 262,
- },
- {
- id: 263,
- },
- {
- id: 264,
- },
- {
- id: 265,
- },
- {
- id: 266,
- },
- {
- id: 267,
- },
- {
- id: 268,
- },
- {
- id: 269,
- },
- {
- id: 270,
- },
- {
- id: 271,
- },
- {
- id: 272,
- },
- {
- id: 273,
- },
- {
- id: 274,
- },
- {
- id: 275,
- },
- {
- id: 276,
- },
- {
- id: 277,
- },
- {
- id: 278,
- },
- {
- id: 279,
- },
- {
- id: 280,
- },
- {
- id: 281,
- },
- {
- id: 282,
- },
- {
- id: 283,
- },
- {
- id: 284,
- },
- {
- id: 285,
- },
- {
- id: 286,
- },
- {
- id: 287,
- },
- {
- id: 288,
- },
- {
- id: 289,
- },
- {
- id: 290,
- },
- {
- id: 291,
- },
- {
- id: 292,
- },
- {
- id: 293,
- },
- {
- id: 294,
- },
- {
- id: 295,
- },
- {
- id: 296,
- },
- {
- id: 297,
- },
- {
- id: 298,
- },
- {
- id: 299,
- },
- {
- id: 300,
- },
- {
- id: 301,
- },
- {
- id: 302,
- },
- {
- id: 303,
- },
- {
- id: 304,
- },
- {
- id: 305,
- },
- {
- id: 306,
- },
- {
- id: 307,
- },
- {
- id: 308,
- },
- {
- id: 309,
- },
- {
- id: 310,
- },
- {
- id: 311,
- },
- {
- id: 312,
- },
- {
- id: 313,
- },
- {
- id: 314,
- },
- {
- id: 315,
- },
- {
- id: 316,
- },
- {
- id: 317,
- },
- {
- id: 318,
- },
- {
- id: 319,
- },
- {
- id: 320,
- },
- {
- id: 321,
- },
- {
- id: 322,
- },
- {
- id: 323,
- },
- {
- id: 324,
- },
- {
- id: 325,
- },
- {
- id: 326,
- },
- {
- id: 327,
- },
- {
- id: 328,
- },
- {
- id: 329,
- },
- {
- id: 330,
- },
- {
- id: 331,
- },
- {
- id: 332,
- },
- {
- id: 333,
- },
- {
- id: 334,
- },
- {
- id: 335,
- },
- {
- id: 336,
- },
- {
- id: 337,
- },
- {
- id: 338,
- },
- {
- id: 339,
- },
- {
- id: 340,
- },
- {
- id: 341,
- },
- {
- id: 342,
- },
- {
- id: 343,
- },
- {
- id: 344,
- },
- {
- id: 345,
- },
- {
- id: 346,
- },
- {
- id: 347,
- },
- {
- id: 348,
- },
- {
- id: 349,
- },
- {
- id: 350,
- },
+ { id: 0 },
+ { id: 1 },
+ { id: 2 },
+ { id: 3 },
+ { id: 4 },
+ { id: 5 },
+ { id: 6 },
+ { id: 7 },
+ { id: 8 },
+ { id: 9 },
+ { id: 10 },
+ { id: 11 },
+ { id: 12 },
+ { id: 13 },
+ { id: 14 },
+ { id: 15 },
+ { id: 16 },
+ { id: 17 },
+ { id: 18 },
+ { id: 19 },
+ { id: 20 },
+ { id: 21 },
+ { id: 22 },
+ { id: 23 },
+ { id: 24 },
+ { id: 25 },
+ { id: 26 },
+ { id: 27 },
+ { id: 28 },
+ { id: 29 },
+ { id: 30 },
+ { id: 31 },
+ { id: 32 },
+ { id: 33 },
+ { id: 34 },
+ { id: 35 },
+ { id: 36 },
+ { id: 37 },
+ { id: 38 },
+ { id: 39 },
+ { id: 40 },
+ { id: 41 },
+ { id: 42 },
+ { id: 43 },
+ { id: 44 },
+ { id: 45 },
+ { id: 46 },
+ { id: 47 },
+ { id: 48 },
+ { id: 49 },
+ { id: 50 },
+ { id: 51 },
+ { id: 52 },
+ { id: 53 },
+ { id: 54 },
+ { id: 55 },
+ { id: 56 },
+ { id: 57 },
+ { id: 58 },
+ { id: 59 },
+ { id: 60 },
+ { id: 61 },
+ { id: 62 },
+ { id: 63 },
+ { id: 64 },
+ { id: 65 },
+ { id: 66 },
+ { id: 67 },
+ { id: 68 },
+ { id: 69 },
+ { id: 70 },
+ { id: 71 },
+ { id: 72 },
+ { id: 73 },
+ { id: 74 },
+ { id: 75 },
+ { id: 76 },
+ { id: 77 },
+ { id: 78 },
+ { id: 79 },
+ { id: 80 },
+ { id: 81 },
+ { id: 82 },
+ { id: 83 },
+ { id: 84 },
+ { id: 85 },
+ { id: 86 },
+ { id: 87 },
+ { id: 88 },
+ { id: 89 },
+ { id: 90 },
+ { id: 91 },
+ { id: 92 },
+ { id: 93 },
+ { id: 94 },
+ { id: 95 },
+ { id: 96 },
+ { id: 97 },
+ { id: 98 },
+ { id: 99 },
+ { id: 100 },
+ { id: 101 },
+ { id: 102 },
+ { id: 103 },
+ { id: 104 },
+ { id: 105 },
+ { id: 106 },
+ { id: 107 },
+ { id: 108 },
+ { id: 109 },
+ { id: 110 },
+ { id: 111 },
+ { id: 112 },
+ { id: 113 },
+ { id: 114 },
+ { id: 115 },
+ { id: 116 },
+ { id: 117 },
+ { id: 118 },
+ { id: 119 },
+ { id: 120 },
+ { id: 121 },
+ { id: 122 },
+ { id: 123 },
+ { id: 124 },
+ { id: 125 },
+ { id: 126 },
+ { id: 127 },
+ { id: 128 },
+ { id: 129 },
+ { id: 130 },
+ { id: 131 },
+ { id: 132 },
+ { id: 133 },
+ { id: 134 },
+ { id: 135 },
+ { id: 136 },
+ { id: 137 },
+ { id: 138 },
+ { id: 139 },
+ { id: 140 },
+ { id: 141 },
+ { id: 142 },
+ { id: 143 },
+ { id: 144 },
+ { id: 145 },
+ { id: 146 },
+ { id: 147 },
+ { id: 148 },
+ { id: 149 },
+ { id: 150 },
+ { id: 151 },
+ { id: 152 },
+ { id: 153 },
+ { id: 154 },
+ { id: 155 },
+ { id: 156 },
+ { id: 157 },
+ { id: 158 },
+ { id: 159 },
+ { id: 160 },
+ { id: 161 },
+ { id: 162 },
+ { id: 163 },
+ { id: 164 },
+ { id: 165 },
+ { id: 166 },
+ { id: 167 },
+ { id: 168 },
+ { id: 169 },
+ { id: 170 },
+ { id: 171 },
+ { id: 172 },
+ { id: 173 },
+ { id: 174 },
+ { id: 175 },
+ { id: 176 },
+ { id: 177 },
+ { id: 178 },
+ { id: 179 },
+ { id: 180 },
+ { id: 181 },
+ { id: 182 },
+ { id: 183 },
+ { id: 184 },
+ { id: 185 },
+ { id: 186 },
+ { id: 187 },
+ { id: 188 },
+ { id: 189 },
+ { id: 190 },
+ { id: 191 },
+ { id: 192 },
+ { id: 193 },
+ { id: 194 },
+ { id: 195 },
+ { id: 196 },
+ { id: 197 },
+ { id: 198 },
+ { id: 199 },
+ { id: 200 },
+ { id: 201 },
+ { id: 202 },
+ { id: 203 },
+ { id: 204 },
+ { id: 205 },
+ { id: 206 },
+ { id: 207 },
+ { id: 208 },
+ { id: 209 },
+ { id: 210 },
+ { id: 211 },
+ { id: 212 },
+ { id: 213 },
+ { id: 214 },
+ { id: 215 },
+ { id: 216 },
+ { id: 217 },
+ { id: 218 },
+ { id: 219 },
+ { id: 220 },
+ { id: 221 },
+ { id: 222 },
+ { id: 223 },
+ { id: 224 },
+ { id: 225 },
+ { id: 226 },
+ { id: 227 },
+ { id: 228 },
+ { id: 229 },
+ { id: 230 },
+ { id: 231 },
+ { id: 232 },
+ { id: 233 },
+ { id: 234 },
+ { id: 235 },
+ { id: 236 },
+ { id: 237 },
+ { id: 238 },
+ { id: 239 },
+ { id: 240 },
+ { id: 241 },
+ { id: 242 },
+ { id: 243 },
+ { id: 244 },
+ { id: 245 },
+ { id: 246 },
+ { id: 247 },
+ { id: 248 },
+ { id: 249 },
+ { id: 250 },
+ { id: 251 },
+ { id: 252 },
+ { id: 253 },
+ { id: 254 },
+ { id: 255 },
+ { id: 256 },
+ { id: 257 },
+ { id: 258 },
+ { id: 259 },
+ { id: 260 },
+ { id: 261 },
+ { id: 262 },
+ { id: 263 },
+ { id: 264 },
+ { id: 265 },
+ { id: 266 },
+ { id: 267 },
+ { id: 268 },
+ { id: 269 },
+ { id: 270 },
+ { id: 271 },
+ { id: 272 },
+ { id: 273 },
+ { id: 274 },
+ { id: 275 },
+ { id: 276 },
+ { id: 277 },
+ { id: 278 },
+ { id: 279 },
+ { id: 280 },
+ { id: 281 },
+ { id: 282 },
+ { id: 283 },
+ { id: 284 },
+ { id: 285 },
+ { id: 286 },
+ { id: 287 },
+ { id: 288 },
+ { id: 289 },
+ { id: 290 },
+ { id: 291 },
+ { id: 292 },
+ { id: 293 },
+ { id: 294 },
+ { id: 295 },
+ { id: 296 },
+ { id: 297 },
+ { id: 298 },
+ { id: 299 },
+ { id: 300 },
+ { id: 301 },
+ { id: 302 },
+ { id: 303 },
+ { id: 304 },
+ { id: 305 },
+ { id: 306 },
+ { id: 307 },
+ { id: 308 },
+ { id: 309 },
+ { id: 310 },
+ { id: 311 },
+ { id: 312 },
+ { id: 313 },
+ { id: 314 },
+ { id: 315 },
+ { id: 316 },
+ { id: 317 },
+ { id: 318 },
+ { id: 319 },
+ { id: 320 },
+ { id: 321 },
+ { id: 322 },
+ { id: 323 },
+ { id: 324 },
+ { id: 325 },
+ { id: 326 },
+ { id: 327 },
+ { id: 328 },
+ { id: 329 },
+ { id: 330 },
+ { id: 331 },
+ { id: 332 },
+ { id: 333 },
+ { id: 334 },
+ { id: 335 },
+ { id: 336 },
+ { id: 337 },
+ { id: 338 },
+ { id: 339 },
+ { id: 340 },
+ { id: 341 },
+ { id: 342 },
+ { id: 343 },
+ { id: 344 },
+ { id: 345 },
+ { id: 346 },
+ { id: 347 },
+ { id: 348 },
+ { id: 349 },
+ { id: 350 },
],
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 8,
- },
+ metadata: { jobId: 8, userId: 'u1' },
},
],
destType: 'marketo_static_list',
@@ -2830,34 +1274,14 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 4,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 5,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 6,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 4, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 5, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 6, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -2895,34 +1319,14 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 1,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 2,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 3,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 1, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 2, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 3, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -2960,12 +1364,7 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -2979,22 +1378,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 7,
- destInfo: {
- authKey: '1zia9wKshXt80YksLmUdJnr7IHI',
- },
- },
+ { jobId: 7, destInfo: { authKey: '1zia9wKshXt80YksLmUdJnr7IHI' }, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -3032,12 +1421,7 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
{
@@ -3051,22 +1435,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 8,
- destInfo: {
- authKey: '1zia9wKshXt80YksLmUdJnr7IHI',
- },
- },
+ { jobId: 8, destInfo: { authKey: '1zia9wKshXt80YksLmUdJnr7IHI' }, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -3131,9 +1505,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1001,
- },
+ fields: { id: 1001 },
channel: 'sources',
context: {
sources: {
@@ -3142,20 +1514,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- id: 'id001',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', id: 'id001' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
destination: {
@@ -3181,9 +1546,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1002,
- },
+ fields: { id: 1002 },
channel: 'sources',
context: {
sources: {
@@ -3192,20 +1555,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- id: 'id002',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', id: 'id002' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
destination: {
@@ -3231,9 +1587,7 @@ export const data = [
message: {
type: 'record',
action: 'insert',
- fields: {
- id: 1003,
- },
+ fields: { id: 1003 },
channel: 'sources',
context: {
sources: {
@@ -3242,20 +1596,13 @@ export const data = [
job_run_id: 'ck99nbd2kqiljdihhkh0',
task_run_id: 'ck99nbd2kqiljdihhkhg',
},
- externalId: [
- {
- type: 'marketoStaticListId',
- id: 'id001',
- },
- ],
+ externalId: [{ type: 'marketoStaticListId', id: 'id001' }],
destinationFields: 'id',
mappedToDestination: 'true',
},
recordId: '3',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
{
destination: {
@@ -3282,12 +1629,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- id: 'id002',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ id: 'id002', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -3298,14 +1640,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2001',
- },
+ fields: { id: '2001' },
type: 'record',
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
},
{
destination: {
@@ -3332,12 +1670,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- id: 'id001',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ id: 'id001', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -3348,14 +1681,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2002',
- },
+ fields: { id: '2002' },
type: 'record',
},
- metadata: {
- jobId: 5,
- },
+ metadata: { jobId: 5, userId: 'u1' },
},
{
destination: {
@@ -3382,12 +1711,7 @@ export const data = [
action: 'delete',
context: {
destinationFields: 'id',
- externalId: [
- {
- id: 'id002',
- type: 'marketoStaticListId',
- },
- ],
+ externalId: [{ id: 'id002', type: 'marketoStaticListId' }],
mappedToDestination: 'true',
sources: {
job_id: 'sf',
@@ -3398,14 +1722,10 @@ export const data = [
},
recordId: '2',
rudderId: '2',
- fields: {
- id: '2003',
- },
+ fields: { id: '2003' },
type: 'record',
},
- metadata: {
- jobId: 6,
- },
+ metadata: { jobId: 6, userId: 'u1' },
},
],
},
@@ -3430,22 +1750,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 5,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 5, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -3483,28 +1793,13 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 1,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 3,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 1, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 3, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -3542,28 +1837,13 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 4,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
- {
- jobId: 6,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 4, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
+ { jobId: 6, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -3601,22 +1881,12 @@ export const data = [
'Content-Type': 'application/json',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
],
metadata: [
- {
- jobId: 2,
- destInfo: {
- authKey: '1zwa1wKshSt81YksKmUdJnr4IOK',
- },
- },
+ { jobId: 2, destInfo: { authKey: '1zwa1wKshSt81YksKmUdJnr4IOK' }, userId: 'u1' },
],
batched: true,
statusCode: 200,
diff --git a/test/integrations/destinations/mautic/router/data.ts b/test/integrations/destinations/mautic/router/data.ts
index 9ac6c8714f3..e0924053f8a 100644
--- a/test/integrations/destinations/mautic/router/data.ts
+++ b/test/integrations/destinations/mautic/router/data.ts
@@ -14,9 +14,7 @@ export const data = [
anonymousId: 'anon-id-new',
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
traits: {
firstName: 'Test',
lastName: 'Rudderlabs',
@@ -52,9 +50,7 @@ export const data = [
userName: 'TestRudderlabs45823@gmail.com',
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
],
destType: 'mautic',
@@ -105,11 +101,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -141,9 +133,7 @@ export const data = [
anonymousId: 'anon-id-new',
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
traits: {
firstName: 'Test',
lastName: 'Rudderlabs',
@@ -180,9 +170,7 @@ export const data = [
userName: 'abcdef',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'mautic',
@@ -196,11 +184,7 @@ export const data = [
body: {
output: [
{
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
errorCategory: 'dataValidation',
errorType: 'configuration',
@@ -241,17 +225,8 @@ export const data = [
message: {
userId: 'user123',
groupId: '17',
- context: {
- externalId: [
- {
- type: 'mauticContactId',
- id: '246',
- },
- ],
- },
- traits: {
- type: 'Segments',
- },
+ context: { externalId: [{ type: 'mauticContactId', id: '246' }] },
+ traits: { type: 'Segments' },
type: 'group',
},
destination: {
@@ -262,9 +237,7 @@ export const data = [
userName: 'TestRudderlabs45823@gmail.com',
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
],
destType: 'mautic',
@@ -289,19 +262,10 @@ export const data = [
'Basic VGVzdFJ1ZGRlcmxhYnM0NTgyM0BnbWFpbC5jb206ZHVtbXlQYXNzd29yZA==',
},
params: {},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/moengage/router/data.ts b/test/integrations/destinations/moengage/router/data.ts
index a5664906e5e..0f8a3de41b7 100644
--- a/test/integrations/destinations/moengage/router/data.ts
+++ b/test/integrations/destinations/moengage/router/data.ts
@@ -21,15 +21,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.6',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.6',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.6' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/testing/script-test.html',
referrer: '',
@@ -37,13 +31,9 @@ export const data = [
title: '',
url: 'http://localhost:3243/testing/script-test.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
traits: {
- company: {
- id: 'abc123',
- },
+ company: { id: 'abc123' },
createdAt: 'Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)',
email: 'rudderTest@gmail.com',
name: 'Rudder Test',
@@ -53,9 +43,7 @@ export const data = [
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
},
event: 'Order Completed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'a0adfab9-baf7-4e09-a2ce-bbe2844c324a',
originalTimestamp: '2020-10-16T08:10:12.782Z',
properties: {
@@ -125,9 +113,7 @@ export const data = [
type: 'track',
userId: 'rudder123',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
ID: '1iuTZs6eEZVMm6GjRBe6bNShaL3',
Name: 'MoEngage Testing',
@@ -136,9 +122,7 @@ export const data = [
Name: 'MOENGAGE',
DisplayName: 'MoEngage',
Config: {
- destConfig: {
- defaultConfig: ['apiId', 'apiKey', 'region'],
- },
+ destConfig: { defaultConfig: ['apiId', 'apiKey', 'region'] },
excludeKeys: [],
includeKeys: [],
supportedSourceTypes: [
@@ -175,15 +159,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.6',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.6',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.6' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/testing/script-test.html',
referrer: '',
@@ -191,13 +169,9 @@ export const data = [
title: '',
url: 'http://localhost:3243/testing/script-test.html',
},
- screen: {
- density: 2,
- },
+ screen: { density: 2 },
traits: {
- company: {
- id: 'abc123',
- },
+ company: { id: 'abc123' },
createdAt: 'Thu Mar 24 2016 17:46:45 GMT+0000 (UTC)',
email: 'rudderTest@gmail.com',
name: 'Rudder Test',
@@ -206,9 +180,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.80 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'e108eb05-f6cd-4624-ba8c-568f2e2b3f92',
originalTimestamp: '2020-10-16T08:26:14.938Z',
receivedAt: '2020-10-16T13:56:14.945+05:30',
@@ -218,9 +190,7 @@ export const data = [
type: 'identify',
userId: 'rudder123',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
ID: '1iuTZs6eEZVMm6GjRBe6bNShaL3',
Name: 'MoEngage Testing',
@@ -229,9 +199,7 @@ export const data = [
Name: 'MOENGAGE',
DisplayName: 'MoEngage',
Config: {
- destConfig: {
- defaultConfig: ['apiId', 'apiKey', 'region'],
- },
+ destConfig: { defaultConfig: ['apiId', 'apiKey', 'region'] },
excludeKeys: [],
includeKeys: [],
supportedSourceTypes: [
@@ -354,11 +322,7 @@ export const data = [
files: {},
userId: '4eb021e9-a2af-4926-ae82-fe996d12f3c5',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -369,9 +333,7 @@ export const data = [
Name: 'MOENGAGE',
DisplayName: 'MoEngage',
Config: {
- destConfig: {
- defaultConfig: ['apiId', 'apiKey', 'region'],
- },
+ destConfig: { defaultConfig: ['apiId', 'apiKey', 'region'] },
excludeKeys: [],
includeKeys: [],
supportedSourceTypes: [
@@ -429,11 +391,7 @@ export const data = [
files: {},
userId: '4eb021e9-a2af-4926-ae82-fe996d12f3c5',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -444,9 +402,7 @@ export const data = [
Name: 'MOENGAGE',
DisplayName: 'MoEngage',
Config: {
- destConfig: {
- defaultConfig: ['apiId', 'apiKey', 'region'],
- },
+ destConfig: { defaultConfig: ['apiId', 'apiKey', 'region'] },
excludeKeys: [],
includeKeys: [],
supportedSourceTypes: [
diff --git a/test/integrations/destinations/monday/network.ts b/test/integrations/destinations/monday/network.ts
new file mode 100644
index 00000000000..f23b9061f85
--- /dev/null
+++ b/test/integrations/destinations/monday/network.ts
@@ -0,0 +1,242 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.monday.com/v2',
+ method: 'POST',
+ headers: {
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ },
+ },
+ httpRes: {
+ data: {
+ data: {
+ boards: [
+ {
+ name: 'Planning',
+ columns: [
+ {
+ id: 'name',
+ title: 'Name',
+ type: 'name',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'subitems',
+ title: 'Subitems',
+ type: 'subtasks',
+ description: null,
+ settings_str:
+ '{"allowMultipleItems":true,"itemTypeName":"column.subtasks.title","displayType":"BOARD_INLINE","boardIds":[3160974974]}',
+ },
+ {
+ id: 'person',
+ title: 'Person',
+ type: 'multiple-person',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'status',
+ title: 'Status',
+ type: 'color',
+ description: null,
+ settings_str:
+ '{"labels":{"0":"Working on it","1":"Done","2":"Stuck"},"labels_positions_v2":{"0":0,"1":2,"2":1,"5":3},"labels_colors":{"0":{"color":"#fdab3d","border":"#E99729","var_name":"orange"},"1":{"color":"#00c875","border":"#00B461","var_name":"green-shadow"},"2":{"color":"#e2445c","border":"#CE3048","var_name":"red-shadow"}}}',
+ },
+ {
+ id: 'date4',
+ title: 'Date',
+ type: 'date',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'checkbox',
+ title: 'Checkbox',
+ type: 'boolean',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'connect_boards',
+ title: 'Connect boards',
+ type: 'board-relation',
+ description: null,
+ settings_str: '{"allowCreateReflectionColumn":false}',
+ },
+ {
+ id: 'status_1',
+ title: 'Other',
+ type: 'color',
+ description: null,
+ settings_str:
+ '{"labels":{"0":"Working on it","1":"Done","2":"Stuck"},"labels_colors":{"0":{"color":"#fdab3d","border":"#E99729","var_name":"orange"},"1":{"color":"#00c875","border":"#00B461","var_name":"green-shadow"},"2":{"color":"#e2445c","border":"#CE3048","var_name":"red-shadow"}}}',
+ },
+ {
+ id: 'date_1',
+ title: 'Date 1',
+ type: 'date',
+ description: null,
+ settings_str: '{"hide_footer":false}',
+ },
+ {
+ id: 'status_12',
+ title: 'new status',
+ type: 'color',
+ description: null,
+ settings_str:
+ '{"labels":{"0":"Working on it","1":"Done","2":"Stuck"},"labels_colors":{"0":{"color":"#fdab3d","border":"#E99729","var_name":"orange"},"1":{"color":"#00c875","border":"#00B461","var_name":"green-shadow"},"2":{"color":"#e2445c","border":"#CE3048","var_name":"red-shadow"}}}',
+ },
+ {
+ id: 'numbers',
+ title: 'Numbers',
+ type: 'numeric',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'text',
+ title: 'Name',
+ type: 'text',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'country',
+ title: 'Country',
+ type: 'country',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'dropdown',
+ title: 'Dropdown',
+ type: 'dropdown',
+ description: null,
+ settings_str:
+ '{"hide_footer":false,"labels":[{"id":1,"name":"dropdown"},{"id":2,"name":"dropup"}]}',
+ },
+ {
+ id: 'email',
+ title: 'Email',
+ type: 'email',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'location',
+ title: 'Location',
+ type: 'location',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'phone',
+ title: 'Phone',
+ type: 'phone',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'rating',
+ title: 'Rating',
+ type: 'rating',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'timeline',
+ title: 'Timeline',
+ type: 'timerange',
+ description: null,
+ settings_str: '{"hide_footer":false}',
+ },
+ {
+ id: 'dependent_on',
+ title: 'Dependent On',
+ type: 'dependency',
+ description:
+ 'Choose the item your task will be dependent on. If the “dependent on” item’s date is changing, the other dates will adjust automatically',
+ settings_str:
+ '{"boardIds":[3142482015],"dependencyNewInfra":true,"allowMultipleItems":true}',
+ },
+ {
+ id: 'long_text',
+ title: 'Long Text',
+ type: 'long-text',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'link',
+ title: 'Link',
+ type: 'link',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'tags',
+ title: 'Tags',
+ type: 'tag',
+ description: null,
+ settings_str: '{"hide_footer":false}',
+ },
+ {
+ id: 'label',
+ title: 'Label',
+ type: 'color',
+ description: '',
+ settings_str:
+ '{"done_colors":[1],"labels":{"3":"Label 2","105":"Label 1","156":"Label 3"},"labels_positions_v2":{"3":1,"5":3,"105":0,"156":2},"labels_colors":{"3":{"color":"#0086c0","border":"#3DB0DF","var_name":"blue-links"},"105":{"color":"#9AADBD","border":"#9AADBD","var_name":"winter"},"156":{"color":"#9D99B9","border":"#9D99B9","var_name":"purple_gray"}}}',
+ },
+ {
+ id: 'world_clock',
+ title: 'World Clock',
+ type: 'timezone',
+ description: null,
+ settings_str: '{}',
+ },
+ {
+ id: 'week',
+ title: 'Week',
+ type: 'week',
+ description: null,
+ settings_str: '{}',
+ },
+ ],
+ groups: [
+ {
+ id: 'topics',
+ title: 'This month',
+ },
+ {
+ id: 'group_title',
+ title: 'Next month',
+ },
+ ],
+ },
+ ],
+ },
+ account_id: 13215538,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.monday.com/v2',
+ method: 'POST',
+ headers: {
+ Authorization: 'failedApiToken',
+ },
+ },
+ httpRes: {
+ data: {
+ boards: [],
+ },
+ status: 200,
+ },
+ },
+];
diff --git a/test/integrations/destinations/monday/processor/data.ts b/test/integrations/destinations/monday/processor/data.ts
new file mode 100644
index 00000000000..4e5280efcbc
--- /dev/null
+++ b/test/integrations/destinations/monday/processor/data.ts
@@ -0,0 +1,1399 @@
+export const data = [
+ {
+ name: 'monday',
+ description: 'Track call with empty columnToPropertyMapping',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, item_name: "Task 1", column_values: "{}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.monday.com/v2',
+ files: {},
+ headers: {
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Track call with undefined columnToPropertyMapping',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, item_name: "Task 1", column_values: "{}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.monday.com/v2',
+ files: {},
+ headers: {
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Check Unsupported message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type identify is not supported',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Check for empty message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: '',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type is required',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Check for empty API Token',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: '',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'ApiToken is a required field',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Check for empty board Id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'boardId is a required field',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Check for event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: '',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event is a required field and should be a string',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Track call with columnToPropertyMapping and with empty groupTitle',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.monday.com/v2',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ },
+ params: {},
+ body: {
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, item_name: "Task 1", column_values: "{\\"status\\":{\\"label\\":\\"Done\\"},\\"email\\":{\\"email\\":\\"abc@email.com\\",\\"text\\":\\"emailId\\"}}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Track call with columnToPropertyMapping and with groupTitle',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.monday.com/v2',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ },
+ params: {},
+ body: {
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, group_id: group_title item_name: "Task 1", column_values: "{\\"status\\":{\\"label\\":\\"Done\\"},\\"email\\":{\\"email\\":\\"abc@email.com\\",\\"text\\":\\"emailId\\"}}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'Non-existing group title check',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next year',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: "Group Next year doesn't exist in the board",
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'check for item name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: '',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Item name is required to create an item',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description:
+ 'Track call with columnToPropertyMapping and with groupTitle with all supported columns',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ {
+ from: 'Checkbox',
+ to: 'checked',
+ },
+ {
+ from: 'Numbers',
+ to: 'number',
+ },
+ {
+ from: 'Name',
+ to: 'textKey',
+ },
+ {
+ from: 'Country',
+ to: 'countryName',
+ },
+ {
+ from: 'Location',
+ to: 'address',
+ },
+ {
+ from: 'Phone',
+ to: 'phone',
+ },
+ {
+ from: 'Rating',
+ to: 'rating',
+ },
+ {
+ from: 'Link',
+ to: 'url',
+ },
+ {
+ from: 'Long Text',
+ to: 'description',
+ },
+ {
+ from: 'World Clock',
+ to: 'timezone',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ countryCode: 'US',
+ latitude: '51.23',
+ longitude: '35.3',
+ rating: '3',
+ linkText: 'websiteLink',
+ checked: 'true',
+ number: '45',
+ textKey: 'texting',
+ countryName: 'Unites States',
+ countryShortName: 'US',
+ address: 'New York',
+ phone: '2626277272',
+ url: 'demo.com',
+ description: 'property description',
+ timezone: 'America/New_York',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.monday.com/v2',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ },
+ params: {},
+ body: {
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, group_id: group_title item_name: "Task 1", column_values: "{\\"status\\":{\\"label\\":\\"Done\\"},\\"email\\":{\\"email\\":\\"abc@email.com\\",\\"text\\":\\"emailId\\"},\\"checkbox\\":{\\"checked\\":true},\\"numbers\\":\\"45\\",\\"text\\":\\"texting\\",\\"country\\":{\\"countryName\\":\\"Unites States\\",\\"countryCode\\":\\"US\\"},\\"location\\":{\\"address\\":\\"New York\\",\\"lat\\":\\"51.23\\",\\"lng\\":\\"35.3\\"},\\"phone\\":{\\"phone\\":\\"2626277272\\",\\"countryShortName\\":\\"US\\"},\\"rating\\":3,\\"link\\":{\\"url\\":\\"demo.com\\",\\"text\\":\\"websiteLink\\"},\\"long_text\\":{\\"text\\":\\"property description\\"},\\"world_clock\\":{\\"timezone\\":\\"America/New_York\\"}}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'check for allowed event name from UI',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: '',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event Discarded. To allow this event, add this in Allowlist',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'monday',
+ description: 'check for deleted boards (configured boards are deleted)',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiToken: 'failedApiToken',
+ boardId: '339283934',
+ groupTitle: 'Next year',
+ columnToPropertyMapping: [
+ {
+ from: 'Status',
+ to: 'status',
+ },
+ {
+ from: 'Email',
+ to: 'emailId',
+ },
+ ],
+ whitelistedEvents: [
+ {
+ eventName: 'create an item',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: {
+ density: 2,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.11',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The board with boardId 339283934 does not exist',
+ statTags: {
+ destType: 'MONDAY',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/monday/router/data.ts b/test/integrations/destinations/monday/router/data.ts
new file mode 100644
index 00000000000..3be8b129c5f
--- /dev/null
+++ b/test/integrations/destinations/monday/router/data.ts
@@ -0,0 +1,192 @@
+export const data = [
+ {
+ name: 'monday',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [{ eventName: 'create an item' }],
+ },
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: { name: 'Task 1' },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ { from: 'Status', to: 'status' },
+ { from: 'Email', to: 'emailId' },
+ ],
+ whitelistedEvents: [{ eventName: 'create an item' }],
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ event: 'create an item',
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ userId: 'user@27',
+ channel: 'web',
+ properties: {
+ name: 'Task 1',
+ status: 'Done',
+ emailId: 'abc@email.com',
+ emailText: 'emailId',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ locale: 'en-US',
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ },
+ ],
+ destType: 'monday',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, item_name: "Task 1", column_values: "{}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.monday.com/v2',
+ files: {},
+ headers: {
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ 'Content-Type': 'application/json',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: '',
+ columnToPropertyMapping: [],
+ whitelistedEvents: [{ eventName: 'create an item' }],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.monday.com/v2',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ },
+ params: {},
+ body: {
+ JSON: {
+ query:
+ 'mutation { create_item (board_id: 339283933, group_id: group_title item_name: "Task 1", column_values: "{\\"status\\":{\\"label\\":\\"Done\\"},\\"email\\":{\\"email\\":\\"abc@email.com\\",\\"text\\":\\"emailId\\"}}") {id}}',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiToken:
+ 'eywwakzdjiksjhriherniSFsjhnskdojsSDFhsdns.sSRSSREWdnfnsjshfjsjskshfiskskdS__Fskilhih',
+ boardId: '339283933',
+ groupTitle: 'Next month',
+ columnToPropertyMapping: [
+ { from: 'Status', to: 'status' },
+ { from: 'Email', to: 'emailId' },
+ ],
+ whitelistedEvents: [{ eventName: 'create an item' }],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/monetate/router/data.ts b/test/integrations/destinations/monetate/router/data.ts
index 09a7f8073d3..eff487bd735 100644
--- a/test/integrations/destinations/monetate/router/data.ts
+++ b/test/integrations/destinations/monetate/router/data.ts
@@ -13,54 +13,31 @@ export const data = [
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
context: {
- screen: {
- height: 22,
- width: 11,
- },
+ screen: { height: 22, width: 11 },
device: {
id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
manufacturer: 'Xiaomi',
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
ip: '0.0.0.0',
},
- traits: {
- address: {
- city: 'Kol',
- country: 'Ind',
- },
- },
+ traits: { address: { city: 'Kol', country: 'Ind' } },
event: 'Product Viewed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
- properties: {
- monetateId: '1234',
- product_id: 'prodId',
- },
+ properties: { monetateId: '1234', product_id: 'prodId' },
timestamp: '2019-09-01T15:46:51.693229+05:30',
type: 'track',
userId: 'newUser',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
monetateChannel: 'channel',
@@ -73,61 +50,34 @@ export const data = [
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
context: {
- screen: {
- height: 22,
- width: 11,
- },
+ screen: { height: 22, width: 11 },
device: {
id: 'df16bffa-5c3d-4fbb-9bce-3bab098129a7R',
manufacturer: 'Xiaomi',
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
ip: '0.0.0.0',
},
- traits: {
- address: {
- city: 'Kol',
- country: 'Ind',
- },
- },
+ traits: { address: { city: 'Kol', country: 'Ind' } },
event: 'Product List Viewed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
monetateId: '1234',
- products: [
- {
- product_id: 1,
- },
- {
- product_id: 2,
- },
- ],
+ products: [{ product_id: 1 }, { product_id: 2 }],
},
timestamp: '2019-09-01T15:46:51.693229+05:30',
type: 'track',
userId: 'newUser',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
monetateChannel: 'channel',
@@ -153,31 +103,17 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://engine.monetate.net/api/engine/v1/decide/retailer',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
monetateId: '1234',
events: [
- {
- eventType: 'monetate:context:IpAddress',
- ipAddress: '0.0.0.0',
- },
- {
- eventType: 'monetate:context:ScreenSize',
- height: 22,
- width: 11,
- },
+ { eventType: 'monetate:context:IpAddress', ipAddress: '0.0.0.0' },
+ { eventType: 'monetate:context:ScreenSize', height: 22, width: 11 },
{
eventType: 'monetate:context:ProductDetailView',
- products: [
- {
- productId: 'prodId',
- sku: '',
- },
- ],
+ products: [{ productId: 'prodId', sku: '' }],
},
],
customerId: 'newUser',
@@ -189,11 +125,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -210,27 +142,15 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://engine.monetate.net/api/engine/v1/decide/retailer',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
monetateId: '1234',
events: [
- {
- eventType: 'monetate:context:IpAddress',
- ipAddress: '0.0.0.0',
- },
- {
- eventType: 'monetate:context:ScreenSize',
- height: 22,
- width: 11,
- },
- {
- eventType: 'monetate:context:ProductThumbnailView',
- products: ['1', '2'],
- },
+ { eventType: 'monetate:context:IpAddress', ipAddress: '0.0.0.0' },
+ { eventType: 'monetate:context:ScreenSize', height: 22, width: 11 },
+ { eventType: 'monetate:context:ProductThumbnailView', products: ['1', '2'] },
],
customerId: 'newUser',
channel: 'channel',
@@ -241,11 +161,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/mp/common.ts b/test/integrations/destinations/mp/common.ts
index 76ed25a760d..82f0e3202b9 100644
--- a/test/integrations/destinations/mp/common.ts
+++ b/test/integrations/destinations/mp/common.ts
@@ -1,8 +1,10 @@
+import { Destination } from '../../../../src/types';
+
const defaultMockFns = () => {
jest.spyOn(Date, 'now').mockImplementation(() => new Date(Date.UTC(2020, 0, 25)).valueOf());
};
-const sampleDestination = {
+const sampleDestination: Destination = {
Config: {
apiKey: 'dummyApiKey',
token: 'dummyApiKey',
@@ -13,11 +15,13 @@ const sampleDestination = {
DisplayName: 'Mixpanel',
ID: '1WhbSZ6uA3H5ChVifHpfL2H6sie',
Name: 'MP',
+ Config: undefined,
},
Enabled: true,
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
};
const destinationWithSetOnceProperty = {
diff --git a/test/integrations/destinations/mp/processor/data.ts b/test/integrations/destinations/mp/processor/data.ts
index a6ba51ee781..5b2d0fbfffd 100644
--- a/test/integrations/destinations/mp/processor/data.ts
+++ b/test/integrations/destinations/mp/processor/data.ts
@@ -94,7 +94,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","campaign_id":"test_name","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342,"utm_campaign":"test_name","utm_source":"rudder","utm_medium":"test_medium","utm_term":"test_tem","utm_content":"test_content","utm_test":"test","utm_keyword":"test_keyword","name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","campaign_id":"test_name","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342402,"utm_campaign":"test_name","utm_source":"rudder","utm_medium":"test_medium","utm_term":"test_tem","utm_content":"test_content","utm_test":"test","utm_keyword":"test_keyword","name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -121,7 +121,10 @@ export const data = [
request: {
body: [
{
- destination: sampleDestination,
+ destination: overrideDestination(sampleDestination, {
+ useUserDefinedPageEventName: true,
+ userDefinedPageEventTemplate: 'Viewed a {{ name }} page',
+ }),
message: {
anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
channel: 'web',
@@ -195,7 +198,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342,"name":"Contact Us","category":"Contact","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Viewed a Contact Us page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342402,"name":"Contact Us","category":"Contact","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -276,7 +279,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Screen","properties":{"category":"communication","ip":"0.0.0.0","$user_id":"hjikl","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342,"name":"Contact Us"}}]',
+ '[{"event":"Loaded a Screen","properties":{"category":"communication","ip":"0.0.0.0","$user_id":"hjikl","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342402,"name":"Contact Us"}}]',
},
XML: {},
FORM: {},
@@ -364,7 +367,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Screen","properties":{"path":"/tests/html/index2.html","referrer":"","search":"","title":"","url":"http://localhost/tests/html/index2.html","ip":"0.0.0.0","$user_id":"hjiklmk","$screen_dpi":2,"mp_lib":"RudderLabs Android SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjiklmk","time":1579847342,"name":"Contact Us","category":"Contact"}}]',
+ '[{"event":"Loaded a Screen","properties":{"path":"/tests/html/index2.html","referrer":"","search":"","title":"","url":"http://localhost/tests/html/index2.html","ip":"0.0.0.0","$user_id":"hjiklmk","$screen_dpi":2,"mp_lib":"RudderLabs Android SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjiklmk","time":1579847342402,"name":"Contact Us","category":"Contact"}}]',
},
XML: {},
FORM: {},
@@ -444,7 +447,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Screen","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342,"name":"Contact Us"}}]',
+ '[{"event":"Loaded a Screen","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"hjikl","time":1579847342402,"name":"Contact Us"}}]',
},
XML: {},
FORM: {},
@@ -547,7 +550,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -705,7 +708,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"test revenue MIXPANEL","properties":{"currency":"USD","revenue":45.89,"counter":1,"item_purchased":"2","number_of_logins":"","city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","campaign_id":"test_name","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"a6a0ad5a-bd26-4f19-8f75-38484e580fc7","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"utm_campaign":"test_name","utm_source":"rudder","utm_medium":"test_medium","utm_term":"test_tem","utm_content":"test_content","utm_test":"test","utm_keyword":"test_keyword","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"test revenue MIXPANEL","properties":{"currency":"USD","revenue":45.89,"counter":1,"item_purchased":"2","number_of_logins":"","city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","campaign_id":"test_name","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"a6a0ad5a-bd26-4f19-8f75-38484e580fc7","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342403,"utm_campaign":"test_name","utm_source":"rudder","utm_medium":"test_medium","utm_term":"test_tem","utm_content":"test_content","utm_test":"test","utm_keyword":"test_keyword","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -952,7 +955,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"revenue":25,"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"revenue":25,"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -1108,7 +1111,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","revenue":34,"key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","first_name":"Mickey","lastName":"Mouse","name":"Mickey Mouse","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","revenue":34,"key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","first_name":"Mickey","lastName":"Mouse","name":"Mickey Mouse","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -1239,7 +1242,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":" new Order Completed totally","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"total":23,"order_id":"50314b8e9bcf000000000000","key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":" new Order Completed totally","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"total":23,"order_id":"50314b8e9bcf000000000000","key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -1370,7 +1373,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":" Order Completed ","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"total":23,"order_id":"50314b8e9bcf000000000000","key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"Billing Amount":"77","city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":" Order Completed ","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"total":23,"order_id":"50314b8e9bcf000000000000","key_1":{"child_key1":"child_value1","child_key2":{"child_key21":"child_value21","child_key22":"child_value22"}},"products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"shipping":3,"subtotal":22.5,"tax":2,"Billing Amount":"77","city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -1538,7 +1541,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -2038,7 +2041,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"revenue":25,"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","firstname":"Mickey","lastname":"Mouse","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"KM Order Completed","properties":{"affiliation":"Google Store","checkout_id":"fksdjfsdjfisjf9sdfjsd9f","coupon":"hasbros","currency":"USD","discount":2.5,"order_id":"50314b8e9bcf000000000000","products":[{"category":"Games","image_url":"https:///www.example.com/product/path.jpg","name":"Monopoly: 3rd Edition","price":19,"product_id":"507f1f77bcf86cd799439011","quantity":1,"sku":"45790-32","url":"https://www.example.com/product/path"},{"category":"Games","name":"Uno Card Game","price":3,"product_id":"505bd76785ebb509fc183733","quantity":2,"sku":"46493-32"}],"revenue":25,"shipping":3,"subtotal":22.5,"tax":2,"total":27.5,"city":"Disney","country":"USA","email":"mickey@disney.com","firstname":"Mickey","lastname":"Mouse","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"aa5f5e44-8756-40ad-ad1e-b0d3b9fa710a","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -2126,7 +2129,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","$android_devices":["test_device_token"],"$os":"Android","$android_model":"Android SDK built for x86","$android_os_version":"8.1.0","$android_manufacturer":"Google","$android_app_version":"1.0","$android_app_version_code":"1.0","$android_brand":"Google"},"$token":"dummyApiKey","$distinct_id":"5094f5704b9cf2b3","$time":null}]',
+ '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","$android_devices":["test_device_token"],"$os":"Android","$android_model":"Android SDK built for x86","$android_os_version":"8.1.0","$android_manufacturer":"Google","$android_app_version":"1.0","$android_app_version_code":"1.0","$android_brand":"Google"},"$token":"dummyApiKey","$distinct_id":"5094f5704b9cf2b3","$time":1584003903421}]',
},
XML: {},
FORM: {},
@@ -2213,7 +2216,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":null}]',
+ '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":1584003903421}]',
},
XML: {},
FORM: {},
@@ -2332,7 +2335,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Page","properties":{"path":"/tests/html/index2.html","referrer":"","search":"","title":"","url":"http://localhost/tests/html/index2.html","category":"communication","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Loaded a Page","properties":{"path":"/tests/html/index2.html","referrer":"","search":"","title":"","url":"http://localhost/tests/html/index2.html","category":"communication","ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"dummyApiKey","distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","time":1579847342402,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -2520,7 +2523,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","createdat":"2020-01-23T08:54:02.362Z","$ios_devices":["test_device_token"],"$ios_device_model":"Android SDK built for x86","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":null}]',
+ '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","createdat":"2020-01-23T08:54:02.362Z","$ios_devices":["test_device_token"],"$ios_device_model":"Android SDK built for x86","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":1584003903421}]',
},
XML: {},
FORM: {},
@@ -2638,7 +2641,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -2730,7 +2733,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -2823,7 +2826,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$name":"Mickey Mouse","$country_code":"USA","$city":"Disney","$region":"US","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$name":"Mickey Mouse","$country_code":"USA","$city":"Disney","$region":"US","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -2921,7 +2924,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3017,7 +3020,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3112,7 +3115,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3206,7 +3209,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3301,7 +3304,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$name":"Mickey Mouse","$country_code":"USA","$city":"Disney","$region":"US","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$name":"Mickey Mouse","$country_code":"USA","$city":"Disney","$region":"US","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3402,7 +3405,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -3691,7 +3694,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"MainActivity","properties":{"name":"MainActivity","automatic":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$user_id":"test_user_id","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"dummyApiKey","distinct_id":"test_user_id","time":1520845503}}]',
+ '[{"event":"MainActivity","properties":{"name":"MainActivity","automatic":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$user_id":"test_user_id","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"dummyApiKey","distinct_id":"test_user_id","time":1520845503421}}]',
},
XML: {},
FORM: {},
@@ -3962,7 +3965,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342,"$ignore_time":true}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402,"$ignore_time":true}]',
},
XML: {},
FORM: {},
@@ -4068,7 +4071,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -4273,7 +4276,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"user1234","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$first_name":"Mickey","$last_name":"Mouse","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"dummyApiKey","$distinct_id":"user1234","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -4392,7 +4395,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Application Installed","properties":{"build":4,"version":"1.0","anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":null}}]',
+ '[{"event":"Application Installed","properties":{"build":4,"version":"1.0","anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":1662363980290}}]',
},
XML: {},
FORM: {},
@@ -4482,7 +4485,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Application Opened","properties":{"build":4,"version":"1.0","anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":null}}]',
+ '[{"event":"Application Opened","properties":{"build":4,"version":"1.0","anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":1662363980290}}]',
},
XML: {},
FORM: {},
@@ -4682,7 +4685,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Product Viewed","properties":{"name":"T-Shirt","$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"apiToken123","distinct_id":"userId01","time":1579847342,"$device_id":"anonId01"}}]',
+ '[{"event":"Product Viewed","properties":{"name":"T-Shirt","$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"apiToken123","distinct_id":"userId01","time":1579847342402,"$device_id":"anonId01"}}]',
},
XML: {},
FORM: {},
@@ -4792,7 +4795,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"apiToken123","$distinct_id":"userId01","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"apiToken123","$distinct_id":"userId01","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -4900,7 +4903,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"apiToken123","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1579847342}]',
+ '[{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"apiToken123","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1579847342402}]',
},
XML: {},
FORM: {},
@@ -4986,7 +4989,8 @@ export const data = [
status: 200,
body: [
{
- error: 'Alias call is deprecated in `Simplified ID merge`',
+ error:
+ 'The use of the alias call in the context of the `Simplified ID merge` feature is not supported anymore.',
statTags: {
destType: 'MP',
errorCategory: 'dataValidation',
@@ -5108,7 +5112,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"test revenue MIXPANEL","properties":{"currency":"USD","revenue":18.9,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$user_id":"userId01","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"a6a0ad5a-bd26-4f19-8f75-38484e580fc7","token":"apiToken123","distinct_id":"userId01","time":1579847342,"$device_id":"anonId01","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"test revenue MIXPANEL","properties":{"currency":"USD","revenue":18.9,"city":"Disney","country":"USA","email":"mickey@disney.com","firstName":"Mickey","ip":"0.0.0.0","$user_id":"userId01","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"a6a0ad5a-bd26-4f19-8f75-38484e580fc7","token":"apiToken123","distinct_id":"userId01","time":1579847342403,"$device_id":"anonId01","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -5212,7 +5216,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"apiToken123","distinct_id":"$device:anonId01","time":1579847342,"$device_id":"anonId01","name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"apiToken123","distinct_id":"$device:anonId01","time":1579847342402,"$device_id":"anonId01","name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
@@ -5523,7 +5527,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Application Installed","properties":{"build":4,"version":"1.0","revenue":12.13,"anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":null}}]',
+ '[{"event":"Application Installed","properties":{"build":4,"version":"1.0","revenue":12.13,"anonymousId":"39da706ec83d0e90","$os":"Android","$screen_height":2984,"$screen_width":1440,"$screen_dpi":560,"$carrier":"T-Mobile","$os_version":"12","$device":"emu64a","$manufacturer":"Google","$model":"sdk_gphone64_arm64","mp_device_model":"sdk_gphone64_arm64","$wifi":true,"$bluetooth_enabled":true,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"4","$app_version_string":"1.0","$insert_id":"168cf720-6227-4b56-a98e-c49bdc7279e9","$session_id":"1662363980","token":"dummyApiKey","distinct_id":"39da706ec83d0e90","time":1662363980290}}]',
},
XML: {},
FORM: {},
@@ -5729,7 +5733,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":null}]',
+ '[{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"dummyApiKey","$distinct_id":"test_user_id","$time":1584003903421}]',
},
XML: {},
FORM: {},
diff --git a/test/integrations/destinations/mp/router/data.ts b/test/integrations/destinations/mp/router/data.ts
index 70589299097..059e222e927 100644
--- a/test/integrations/destinations/mp/router/data.ts
+++ b/test/integrations/destinations/mp/router/data.ts
@@ -20,10 +20,7 @@ export const data = [
useOldMapping: true,
strictMode: true,
}),
- metadata: {
- jobId: 1,
- additionalProp: 1,
- },
+ metadata: { jobId: 1, additionalProp: 1, userId: 'u1' },
message: {
anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
channel: 'web',
@@ -36,18 +33,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {},
page: {
path: '/destinations/mixpanel',
@@ -62,9 +51,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
originalTimestamp: '2020-01-24T06:29:02.358Z',
page: {
@@ -94,10 +81,7 @@ export const data = [
identityMergeApi: 'simplified',
strictMode: true,
}),
- metadata: {
- jobId: 2,
- additionalProp: 2,
- },
+ metadata: { jobId: 2, additionalProp: 2, userId: 'u1' },
message: {
anonymousId: 'anonId01',
channel: 'mobile',
@@ -116,40 +100,20 @@ export const data = [
type: 'ios',
token: 'test_device_token',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'iOS',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'iOS', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'Product Viewed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
userId: 'userId01',
messageId: 'id2',
- properties: {
- name: 'T-Shirt',
- revenue: 18.9,
- },
+ properties: { name: 'T-Shirt', revenue: 18.9 },
type: 'track',
originalTimestamp: '2020-01-24T06:29:02.362Z',
receivedAt: '2020-01-24T11:59:02.403+05:30',
@@ -165,10 +129,7 @@ export const data = [
useOldMapping: true,
strictMode: true,
}),
- metadata: {
- jobId: 3,
- additionalProp: 3,
- },
+ metadata: { jobId: 3, additionalProp: 3, userId: 'u1' },
message: {
anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
channel: 'web',
@@ -180,18 +141,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
city: 'Disney',
country: 'USA',
@@ -211,9 +164,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -243,10 +194,7 @@ export const data = [
identityMergeApi: 'simplified',
strictMode: true,
}),
- metadata: {
- jobId: 4,
- additionalProp: 4,
- },
+ metadata: { jobId: 4, additionalProp: 4, userId: 'u1' },
message: {
anonymousId: 'anonId01',
channel: 'web',
@@ -258,18 +206,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
city: 'Disney',
country: 'USA',
@@ -291,9 +231,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -320,10 +258,7 @@ export const data = [
token: 'test_api_token',
strictMode: true,
}),
- metadata: {
- jobId: 5,
- additionalProp: 5,
- },
+ metadata: { jobId: 5, additionalProp: 5, userId: 'u1' },
message: {
anonymousId: '5094f5704b9cf2b3',
channel: 'mobile',
@@ -342,44 +277,21 @@ export const data = [
type: 'ios',
token: 'test_device_token',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'iOS',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'iOS', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '5094f5704b9cf2b3',
- userId: 'test_user_id',
- },
+ traits: { anonymousId: '5094f5704b9cf2b3', userId: 'test_user_id' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'MainActivity',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
userId: 'test_user_id',
messageId: 'id2',
- properties: {
- name: 'MainActivity',
- automatic: true,
- },
+ properties: { name: 'MainActivity', automatic: true },
originalTimestamp: '2020-03-12T09:05:03.421Z',
type: 'identify',
sentAt: '2020-03-12T09:05:13.042Z',
@@ -397,10 +309,7 @@ export const data = [
],
strictMode: true,
}),
- metadata: {
- jobId: 6,
- additionalProp: 6,
- },
+ metadata: { jobId: 6, additionalProp: 6, userId: 'u1' },
message: {
anonymousId: 'anonId06',
channel: 'web',
@@ -412,18 +321,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -437,9 +338,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -450,9 +349,7 @@ export const data = [
initial_referrer: 'https://docs.rudderstack.com',
initial_referring_domain: 'docs.rudderstack.com',
},
- traits: {
- company: 'testComp',
- },
+ traits: { company: 'testComp' },
messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
originalTimestamp: '2020-01-24T06:29:02.362Z',
receivedAt: '2020-01-24T11:59:02.403+05:30',
@@ -475,10 +372,7 @@ export const data = [
],
strictMode: true,
}),
- metadata: {
- jobId: 7,
- additionalProp: 7,
- },
+ metadata: { jobId: 7, additionalProp: 7, userId: 'u1' },
message: {
anonymousId: 'anonId06',
channel: 'web',
@@ -490,18 +384,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -515,9 +401,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -542,9 +426,7 @@ export const data = [
destType: 'mp',
},
method: 'POST',
- headers: {
- 'X-Feature-Gzip-Support': '?1',
- },
+ headers: { 'X-Feature-Gzip-Support': '?1' },
},
},
output: {
@@ -562,27 +444,20 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {},
GZIP: {
payload:
- '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"test_api_token","distinct_id":"hjikl","time":1688624942,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"test_api_token","distinct_id":"hjikl","time":1688624942402,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- additionalProp: 1,
- },
- ],
+ metadata: [{ jobId: 1, additionalProp: 1, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -604,6 +479,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -635,15 +511,13 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {},
GZIP: {
payload:
- '[{"event":"Product Viewed","properties":{"name":"T-Shirt","revenue":18.9,"$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"test_api_token","distinct_id":"userId01","time":1688624942,"$device_id":"anonId01"}}]',
+ '[{"event":"Product Viewed","properties":{"name":"T-Shirt","revenue":18.9,"$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"test_api_token","distinct_id":"userId01","time":1688624942402,"$device_id":"anonId01"}}]',
},
XML: {},
FORM: {},
@@ -651,12 +525,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- additionalProp: 2,
- },
- ],
+ metadata: [{ jobId: 2, additionalProp: 2, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -678,6 +547,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -693,7 +563,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1688624942},{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1688624942},{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"test_api_token","$distinct_id":"test_user_id","$time":null}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1688624942402},{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1688624942402},{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"test_api_token","$distinct_id":"test_user_id","$time":1584003903421}]',
},
XML: {},
FORM: {},
@@ -709,9 +579,7 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {},
@@ -726,18 +594,9 @@ export const data = [
},
],
metadata: [
- {
- jobId: 3,
- additionalProp: 3,
- },
- {
- jobId: 4,
- additionalProp: 4,
- },
- {
- jobId: 5,
- additionalProp: 5,
- },
+ { jobId: 3, additionalProp: 3, userId: 'u1' },
+ { jobId: 4, additionalProp: 4, userId: 'u1' },
+ { jobId: 5, additionalProp: 5, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -760,6 +619,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -801,12 +661,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 6,
- additionalProp: 6,
- },
- ],
+ metadata: [{ jobId: 6, additionalProp: 6, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -815,11 +670,7 @@ export const data = [
apiSecret: 'test_api_secret',
token: 'test_api_token',
prefixProperties: true,
- groupKeySettings: [
- {
- groupKey: 'company',
- },
- ],
+ groupKeySettings: [{ groupKey: 'company' }],
strictMode: true,
useNativeSDK: false,
},
@@ -832,15 +683,11 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
- metadata: [
- {
- jobId: 7,
- additionalProp: 7,
- },
- ],
+ metadata: [{ jobId: 7, additionalProp: 7, userId: 'u1' }],
batched: false,
statusCode: 400,
error:
@@ -860,11 +707,7 @@ export const data = [
token: 'test_api_token',
prefixProperties: true,
useNativeSDK: false,
- groupKeySettings: [
- {
- groupKey: 'company',
- },
- ],
+ groupKeySettings: [{ groupKey: 'company' }],
strictMode: true,
},
DestinationDefinition: {
@@ -876,6 +719,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
],
@@ -901,10 +745,7 @@ export const data = [
useOldMapping: true,
strictMode: true,
}),
- metadata: {
- jobId: 1,
- additionalProp: 1,
- },
+ metadata: { jobId: 1, additionalProp: 1, userId: 'u1' },
message: {
anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
channel: 'web',
@@ -917,18 +758,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {},
page: {
path: '/destinations/mixpanel',
@@ -943,9 +776,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'dd266c67-9199-4a52-ba32-f46ddde67312',
originalTimestamp: '2020-01-24T06:29:02.358Z',
page: {
@@ -975,10 +806,7 @@ export const data = [
identityMergeApi: 'simplified',
strictMode: true,
}),
- metadata: {
- jobId: 2,
- additionalProp: 2,
- },
+ metadata: { jobId: 2, additionalProp: 2, userId: 'u1' },
message: {
anonymousId: 'anonId01',
channel: 'mobile',
@@ -997,40 +825,20 @@ export const data = [
type: 'ios',
token: 'test_device_token',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'iOS',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'iOS', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'Product Viewed',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
userId: 'userId01',
messageId: 'id2',
- properties: {
- name: 'T-Shirt',
- revenue: 18.9,
- },
+ properties: { name: 'T-Shirt', revenue: 18.9 },
type: 'track',
originalTimestamp: '2020-01-24T06:29:02.362Z',
receivedAt: '2020-01-24T11:59:02.403+05:30',
@@ -1046,10 +854,7 @@ export const data = [
useOldMapping: true,
strictMode: true,
}),
- metadata: {
- jobId: 3,
- additionalProp: 3,
- },
+ metadata: { jobId: 3, additionalProp: 3, userId: 'u1' },
message: {
anonymousId: 'e6ab2c5e-2cda-44a9-a962-e2f67df78bca',
channel: 'web',
@@ -1061,18 +866,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
city: 'Disney',
country: 'USA',
@@ -1092,9 +889,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1124,10 +919,7 @@ export const data = [
identityMergeApi: 'simplified',
strictMode: true,
}),
- metadata: {
- jobId: 4,
- additionalProp: 4,
- },
+ metadata: { jobId: 4, additionalProp: 4, userId: 'u1' },
message: {
anonymousId: 'anonId01',
channel: 'web',
@@ -1139,18 +931,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
city: 'Disney',
country: 'USA',
@@ -1172,9 +956,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1201,10 +983,7 @@ export const data = [
token: 'test_api_token',
strictMode: true,
}),
- metadata: {
- jobId: 5,
- additionalProp: 5,
- },
+ metadata: { jobId: 5, additionalProp: 5, userId: 'u1' },
message: {
anonymousId: '5094f5704b9cf2b3',
channel: 'mobile',
@@ -1223,44 +1002,21 @@ export const data = [
type: 'ios',
token: 'test_device_token',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'iOS',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'iOS', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '5094f5704b9cf2b3',
- userId: 'test_user_id',
- },
+ traits: { anonymousId: '5094f5704b9cf2b3', userId: 'test_user_id' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'MainActivity',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
userId: 'test_user_id',
messageId: 'id2',
- properties: {
- name: 'MainActivity',
- automatic: true,
- },
+ properties: { name: 'MainActivity', automatic: true },
originalTimestamp: '2020-03-12T09:05:03.421Z',
type: 'identify',
sentAt: '2020-03-12T09:05:13.042Z',
@@ -1278,10 +1034,7 @@ export const data = [
],
strictMode: true,
}),
- metadata: {
- jobId: 6,
- additionalProp: 6,
- },
+ metadata: { jobId: 6, additionalProp: 6, userId: 'u1' },
message: {
anonymousId: 'anonId06',
channel: 'web',
@@ -1293,18 +1046,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1318,9 +1063,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1331,9 +1074,7 @@ export const data = [
initial_referrer: 'https://docs.rudderstack.com',
initial_referring_domain: 'docs.rudderstack.com',
},
- traits: {
- company: 'testComp',
- },
+ traits: { company: 'testComp' },
messageId: '2536eda4-d638-4c93-8014-8ffe3f083214',
originalTimestamp: '2020-01-24T06:29:02.362Z',
receivedAt: '2020-01-24T11:59:02.403+05:30',
@@ -1356,10 +1097,7 @@ export const data = [
],
strictMode: true,
}),
- metadata: {
- jobId: 7,
- additionalProp: 7,
- },
+ metadata: { jobId: 7, additionalProp: 7, userId: 'u1' },
message: {
anonymousId: 'anonId06',
channel: 'web',
@@ -1371,18 +1109,10 @@ export const data = [
version: '1.0.5',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.5',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.5' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1396,9 +1126,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
page: {
path: '/destinations/mixpanel',
referrer: '',
@@ -1440,26 +1168,19 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"test_api_token","distinct_id":"hjikl","time":1688624942,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
+ '[{"event":"Loaded a Page","properties":{"ip":"0.0.0.0","$user_id":"hjikl","$current_url":"https://docs.rudderstack.com/destinations/mixpanel","$screen_dpi":2,"mp_lib":"RudderLabs JavaScript SDK","$app_build_number":"1.0.0","$app_version_string":"1.0.5","$insert_id":"dd266c67-9199-4a52-ba32-f46ddde67312","token":"test_api_token","distinct_id":"hjikl","time":1688624942402,"name":"Contact Us","$browser":"Chrome","$browser_version":"79.0.3945.117"}}]',
},
XML: {},
FORM: {},
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- additionalProp: 1,
- },
- ],
+ metadata: [{ jobId: 1, additionalProp: 1, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -1481,6 +1202,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -1512,14 +1234,12 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {
batch:
- '[{"event":"Product Viewed","properties":{"name":"T-Shirt","revenue":18.9,"$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"test_api_token","distinct_id":"userId01","time":1688624942,"$device_id":"anonId01"}}]',
+ '[{"event":"Product Viewed","properties":{"name":"T-Shirt","revenue":18.9,"$user_id":"userId01","$os":"iOS","$screen_height":1794,"$screen_width":1080,"$screen_dpi":420,"$carrier":"Android","$os_version":"8.1.0","$device":"generic_x86","$manufacturer":"Google","$model":"Android SDK built for x86","mp_device_model":"Android SDK built for x86","$wifi":true,"$bluetooth_enabled":false,"mp_lib":"com.rudderstack.android.sdk.core","$app_build_number":"1","$app_version_string":"1.0","$insert_id":"id2","token":"test_api_token","distinct_id":"userId01","time":1688624942402,"$device_id":"anonId01"}}]',
},
XML: {},
FORM: {},
@@ -1527,12 +1247,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- additionalProp: 2,
- },
- ],
+ metadata: [{ jobId: 2, additionalProp: 2, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -1554,6 +1269,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -1569,7 +1285,7 @@ export const data = [
JSON: {},
JSON_ARRAY: {
batch:
- '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1688624942},{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1688624942},{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"test_api_token","$distinct_id":"test_user_id","$time":null}]',
+ '[{"$set":{"$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$firstName":"Mickey","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"e6ab2c5e-2cda-44a9-a962-e2f67df78bca","$ip":"0.0.0.0","$time":1688624942402},{"$set":{"$created":"2020-01-23T08:54:02.362Z","$email":"mickey@disney.com","$country_code":"USA","$city":"Disney","$initial_referrer":"https://docs.rudderstack.com","$initial_referring_domain":"docs.rudderstack.com","$name":"Mickey Mouse","$firstName":"Mickey","$lastName":"Mouse","$browser":"Chrome","$browser_version":"79.0.3945.117"},"$token":"test_api_token","$distinct_id":"$device:anonId01","$ip":"0.0.0.0","$time":1688624942402},{"$set":{"$carrier":"Android","$manufacturer":"Google","$model":"Android SDK built for x86","$screen_height":1794,"$screen_width":1080,"$wifi":true,"anonymousId":"5094f5704b9cf2b3","userId":"test_user_id","$ios_devices":["test_device_token"],"$os":"iOS","$ios_device_model":"Android SDK built for x86","$ios_version":"8.1.0","$ios_app_release":"1","$ios_app_version":"1.0"},"$token":"test_api_token","$distinct_id":"test_user_id","$time":1584003903421}]',
},
XML: {},
FORM: {},
@@ -1585,9 +1301,7 @@ export const data = [
'Content-Type': 'application/json',
Authorization: 'Basic dGVzdF9hcGlfc2VjcmV0Og==',
},
- params: {
- strict: 1,
- },
+ params: { strict: 1 },
body: {
JSON: {},
JSON_ARRAY: {
@@ -1601,18 +1315,9 @@ export const data = [
},
],
metadata: [
- {
- jobId: 3,
- additionalProp: 3,
- },
- {
- jobId: 4,
- additionalProp: 4,
- },
- {
- jobId: 5,
- additionalProp: 5,
- },
+ { jobId: 3, additionalProp: 3, userId: 'u1' },
+ { jobId: 4, additionalProp: 4, userId: 'u1' },
+ { jobId: 5, additionalProp: 5, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -1635,6 +1340,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
@@ -1676,12 +1382,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 6,
- additionalProp: 6,
- },
- ],
+ metadata: [{ jobId: 6, additionalProp: 6, userId: 'u1' }],
batched: true,
statusCode: 200,
destination: {
@@ -1690,11 +1391,7 @@ export const data = [
apiSecret: 'test_api_secret',
token: 'test_api_token',
prefixProperties: true,
- groupKeySettings: [
- {
- groupKey: 'company',
- },
- ],
+ groupKeySettings: [{ groupKey: 'company' }],
strictMode: true,
useNativeSDK: false,
},
@@ -1707,15 +1404,11 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
{
- metadata: [
- {
- jobId: 7,
- additionalProp: 7,
- },
- ],
+ metadata: [{ jobId: 7, additionalProp: 7, userId: 'u1' }],
batched: false,
statusCode: 400,
error:
@@ -1735,11 +1428,7 @@ export const data = [
token: 'test_api_token',
prefixProperties: true,
useNativeSDK: false,
- groupKeySettings: [
- {
- groupKey: 'company',
- },
- ],
+ groupKeySettings: [{ groupKey: 'company' }],
strictMode: true,
},
DestinationDefinition: {
@@ -1751,6 +1440,7 @@ export const data = [
ID: '1WhcOCGgj9asZu850HvugU2C3Aq',
Name: 'MP',
Transformations: [],
+ WorkspaceID: '',
},
},
],
diff --git a/test/integrations/destinations/ninetailed/commonConfig.ts b/test/integrations/destinations/ninetailed/commonConfig.ts
new file mode 100644
index 00000000000..3b5d4149f27
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/commonConfig.ts
@@ -0,0 +1,112 @@
+export const destination = {
+ ID: 'random_id',
+ Name: 'ninetailed',
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ organisationId: 'dummyOrganisationId',
+ environment: 'main',
+ },
+};
+
+export const metadata = {
+ destinationId: 'dummyDestId',
+};
+export const commonProperties = {
+ segment: 'SampleSegment',
+ shipcountry: 'USA',
+ shipped: '20240129_1500',
+ sitename: 'SampleSiteName',
+ storeId: '12345',
+ storecat: 'Electronics',
+};
+export const traits = {
+ email: 'test@user.com',
+ firstname: 'John',
+ lastname: 'Doe',
+ phone: '+1(123)456-7890',
+ gender: 'Male',
+ birthday: '1980-01-02',
+ city: 'San Francisco',
+};
+export const context = {
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'campign_123',
+ source: 'social marketing',
+ medium: 'facebook',
+ term: '1 year',
+ },
+ library: {
+ name: 'RudderstackSDK',
+ version: 'Ruddderstack SDK version',
+ },
+ locale: 'en-US',
+ page: {
+ path: '/signup',
+ referrer: 'https://rudderstack.medium.com/',
+ search: '?type=freetrial',
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ location: {
+ coordinates: {
+ latitude: 40.7128,
+ longitude: -74.006,
+ },
+ city: 'San Francisco',
+ postalCode: '94107',
+ region: 'CA',
+ regionCode: 'CA',
+ country: ' United States',
+ countryCode: 'United States of America',
+ continent: 'North America',
+ timezone: 'America/Los_Angeles',
+ },
+};
+
+export const commonInput = {
+ anonymousId: 'anon_123',
+ messageId: 'dummy_msg_id',
+ context,
+ channel: 'web',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+};
+
+export const commonOutput = {
+ anonymousId: 'anon_123',
+ messageId: 'dummy_msg_id',
+ context,
+ channel: 'web',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+};
+
+export const endpoint =
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events';
+export const routerInstrumentationErrorStatTags = {
+ destType: 'NINETAILED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'cdkV2',
+ module: 'destination',
+};
+export const processInstrumentationErrorStatTags = {
+ destType: 'NINETAILED',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ destinationId: 'dummyDestId',
+};
diff --git a/test/integrations/destinations/ninetailed/mocks.ts b/test/integrations/destinations/ninetailed/mocks.ts
new file mode 100644
index 00000000000..a16b2760533
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/mocks.ts
@@ -0,0 +1,5 @@
+import config from '../../../../src/cdk/v2/destinations/ninetailed/config';
+
+export const defaultMockFns = () => {
+ jest.replaceProperty(config, 'MAX_BATCH_SIZE', 2);
+};
diff --git a/test/integrations/destinations/ninetailed/processor/data.ts b/test/integrations/destinations/ninetailed/processor/data.ts
new file mode 100644
index 00000000000..4e5fa72365d
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/processor/data.ts
@@ -0,0 +1,5 @@
+import { validationFailures } from './validation';
+import { track } from './track';
+import { page } from './page';
+import { identify } from './identify';
+export const data = [...identify, ...page, ...track, ...validationFailures];
diff --git a/test/integrations/destinations/ninetailed/processor/identify.ts b/test/integrations/destinations/ninetailed/processor/identify.ts
new file mode 100644
index 00000000000..fbd7379e196
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/processor/identify.ts
@@ -0,0 +1,155 @@
+import {
+ destination,
+ traits,
+ commonInput,
+ metadata,
+ processInstrumentationErrorStatTags,
+} from '../commonConfig';
+import { transformResultBuilder } from '../../../testUtils';
+export const identify = [
+ {
+ id: 'ninetailed-test-identify-success-1',
+ name: 'ninetailed',
+ description: 'identify call with all mappings available',
+ scenario: 'Framework+Buisness',
+ successCriteria: 'Response should contain all the mappings and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'identify',
+ ...commonInput,
+ userId: 'sajal12',
+ traits: traits,
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ },
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ JSON: {
+ events: [
+ {
+ context: {
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'campign_123',
+ source: 'social marketing',
+ medium: 'facebook',
+ term: '1 year',
+ },
+ library: {
+ name: 'RudderstackSDK',
+ version: 'Ruddderstack SDK version',
+ },
+ locale: 'en-US',
+ page: {
+ path: '/signup',
+ referrer: 'https://rudderstack.medium.com/',
+ search: '?type=freetrial',
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ location: {
+ coordinates: {
+ latitude: 40.7128,
+ longitude: -74.006,
+ },
+ city: 'San Francisco',
+ postalCode: '94107',
+ region: 'CA',
+ regionCode: 'CA',
+ country: ' United States',
+ countryCode: 'United States of America',
+ continent: 'North America',
+ timezone: 'America/Los_Angeles',
+ },
+ },
+ type: 'identify',
+ channel: 'web',
+ userId: 'sajal12',
+ messageId: 'dummy_msg_id',
+ traits: traits,
+ anonymousId: 'anon_123',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ ],
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'ninetailed-test-identify-failure-1',
+ name: 'ninetailed',
+ description: 'identify call with no userId available',
+ scenario: 'Framework',
+ successCriteria:
+ 'Error should be thrown for required field userId not present and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ ...commonInput,
+ type: 'identify',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ traits: traits,
+ },
+ metadata,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from "userIdOnly": Workflow: procWorkflow, Step: preparePayload, ChildStep: undefined, OriginalError: Missing required value from "userIdOnly"',
+ metadata: {
+ destinationId: 'dummyDestId',
+ },
+ statTags: processInstrumentationErrorStatTags,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ninetailed/processor/page.ts b/test/integrations/destinations/ninetailed/processor/page.ts
new file mode 100644
index 00000000000..93a086ceea0
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/processor/page.ts
@@ -0,0 +1,108 @@
+import { destination, context, commonProperties, metadata } from '../commonConfig';
+import { transformResultBuilder } from '../../../testUtils';
+export const page = [
+ {
+ id: 'ninetailed-test-page-success-1',
+ name: 'ninetailed',
+ description: 'page call with all mappings available',
+ scenario: 'Framework+Buisness',
+ successCriteria: 'Response should contain all the mappings and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ context,
+ type: 'page',
+ event: 'product purchased',
+ userId: 'sajal12',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ properties: commonProperties,
+ anonymousId: 'anon_123',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ },
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ JSON: {
+ events: [
+ {
+ context: {
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'campign_123',
+ source: 'social marketing',
+ medium: 'facebook',
+ term: '1 year',
+ },
+ library: {
+ name: 'RudderstackSDK',
+ version: 'Ruddderstack SDK version',
+ },
+ locale: 'en-US',
+ page: {
+ path: '/signup',
+ referrer: 'https://rudderstack.medium.com/',
+ search: '?type=freetrial',
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ location: {
+ coordinates: {
+ latitude: 40.7128,
+ longitude: -74.006,
+ },
+ city: 'San Francisco',
+ postalCode: '94107',
+ region: 'CA',
+ regionCode: 'CA',
+ country: ' United States',
+ countryCode: 'United States of America',
+ continent: 'North America',
+ timezone: 'America/Los_Angeles',
+ },
+ },
+ type: 'page',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ properties: commonProperties,
+ anonymousId: 'anon_123',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ ],
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ninetailed/processor/track.ts b/test/integrations/destinations/ninetailed/processor/track.ts
new file mode 100644
index 00000000000..6b6a1e7831d
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/processor/track.ts
@@ -0,0 +1,204 @@
+import { destination, context, commonProperties, metadata } from '../commonConfig';
+import { transformResultBuilder } from '../../../testUtils';
+export const track = [
+ {
+ id: 'ninetailed-test-track-success-1',
+ name: 'ninetailed',
+ description: 'Track call with all mappings available',
+ scenario: 'Framework+Buisness',
+ successCriteria: 'Response should contain all the mappings and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ context: {
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'campign_123',
+ source: 'social marketing',
+ medium: 'facebook',
+ term: '1 year',
+ },
+ library: {
+ name: 'RudderstackSDK',
+ version: 'Ruddderstack SDK version',
+ },
+ locale: 'en-US',
+ page: {
+ path: '/signup',
+ referrer: 'https://rudderstack.medium.com/',
+ search: '?type=freetrial',
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ location: {
+ coordinates: {
+ latitude: 40.7128,
+ longitude: -74.006,
+ },
+ city: 'San Francisco',
+ postalCode: '94107',
+ region: 'CA',
+ regionCode: 'CA',
+ country: ' United States',
+ countryCode: 'United States of America',
+ continent: 'North America',
+ timezone: 'America/Los_Angeles',
+ },
+ },
+ type: 'track',
+ event: 'product purchased',
+ userId: 'sajal12',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ properties: commonProperties,
+ anonymousId: 'anon_123',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ },
+ output: transformResultBuilder({
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ JSON: {
+ events: [
+ {
+ context: {
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'campign_123',
+ source: 'social marketing',
+ medium: 'facebook',
+ term: '1 year',
+ },
+ library: {
+ name: 'RudderstackSDK',
+ version: 'Ruddderstack SDK version',
+ },
+ locale: 'en-US',
+ page: {
+ path: '/signup',
+ referrer: 'https://rudderstack.medium.com/',
+ search: '?type=freetrial',
+ url: 'https://app.rudderstack.com/signup?type=freetrial',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ location: {
+ coordinates: {
+ latitude: 40.7128,
+ longitude: -74.006,
+ },
+ city: 'San Francisco',
+ postalCode: '94107',
+ region: 'CA',
+ regionCode: 'CA',
+ country: ' United States',
+ countryCode: 'United States of America',
+ continent: 'North America',
+ timezone: 'America/Los_Angeles',
+ },
+ },
+ type: 'track',
+ event: 'product purchased',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ properties: commonProperties,
+ anonymousId: 'anon_123',
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ ],
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'ninetailed-test-track-failure-1',
+ name: 'ninetailed',
+ description: 'track call with no event available',
+ scenario: 'Framework',
+ successCriteria:
+ 'Error should be thrown for required field event not present and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ context,
+ type: 'track',
+ channel: 'mobile',
+ messageId: 'dummy_msg_id',
+ properties: commonProperties,
+ anonymousId: 'anon_123',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata,
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from "event": Workflow: procWorkflow, Step: preparePayload, ChildStep: undefined, OriginalError: Missing required value from "event"',
+ metadata: {
+ destinationId: 'dummyDestId',
+ },
+ statTags: {
+ destType: 'NINETAILED',
+ destinationId: 'dummyDestId',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ninetailed/processor/validation.ts b/test/integrations/destinations/ninetailed/processor/validation.ts
new file mode 100644
index 00000000000..68c025faad1
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/processor/validation.ts
@@ -0,0 +1,115 @@
+import { processInstrumentationErrorStatTags, destination, context } from '../commonConfig';
+
+export const validationFailures = [
+ {
+ id: 'Ninetailed-validation-test-1',
+ name: 'ninetailed',
+ description: 'Required field anonymousId not present',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for anonymousId not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ context,
+ properties: {
+ products: [{}],
+ },
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from "anonymousId": Workflow: procWorkflow, Step: preparePayload, ChildStep: undefined, OriginalError: Missing required value from "anonymousId"',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: processInstrumentationErrorStatTags,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'Ninetailed-test-4',
+ name: 'ninetailed',
+ description: 'Unsupported message type -> group',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for Unsupported message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'group',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: 'dummy_msg_id',
+ traits: {
+ orderId: 'ord 123',
+ products: [],
+ },
+ anonymousId: 'anon_123',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'message type group is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type group is not supported',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: processInstrumentationErrorStatTags,
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/ninetailed/router/basicProperties.ts b/test/integrations/destinations/ninetailed/router/basicProperties.ts
new file mode 100644
index 00000000000..5725f3d4451
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/router/basicProperties.ts
@@ -0,0 +1,33 @@
+export const trackProperties = {
+ index: 'products',
+ queryId: '43b15df305339e827f0ac0bdc5ebcaa7',
+ products: [
+ { objectId: 'ecommerce-sample-data-919', position: 7 },
+ { objectId: '9780439784542', position: 8 },
+ ],
+};
+
+export const pageProperties = {
+ title: 'Sample Page',
+ url: 'https://example.com/?utm_campaign=example_campaign&utm_content=example_content',
+ path: '/',
+ hash: '',
+ search: '?utm_campaign=example_campaign&utm_content=example_content',
+ width: '1920',
+ height: '1080',
+ query: {
+ utm_campaign: 'example_campaign',
+ utm_content: 'example_content',
+ },
+ referrer: '',
+};
+
+export const traits = {
+ email: 'test@user.com',
+ firstname: 'John',
+ lastname: 'Doe',
+ phone: '+1(123)456-7890',
+ gender: 'Male',
+ birthday: '1980-01-02',
+ city: 'San Francisco',
+};
diff --git a/test/integrations/destinations/ninetailed/router/data.ts b/test/integrations/destinations/ninetailed/router/data.ts
new file mode 100644
index 00000000000..05105f4aed8
--- /dev/null
+++ b/test/integrations/destinations/ninetailed/router/data.ts
@@ -0,0 +1,393 @@
+import {
+ commonInput,
+ destination,
+ commonOutput,
+ routerInstrumentationErrorStatTags,
+} from '../commonConfig';
+import { trackProperties, pageProperties, traits } from './basicProperties';
+import { defaultMockFns } from '../mocks';
+
+export const data = [
+ {
+ name: 'ninetailed',
+ id: 'Test 0 - router',
+ description: 'Batch calls with all three type of calls as success',
+ scenario: 'Framework+Buisness',
+ successCriteria: 'All events should be transformed successfully and status code should be 200',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ ...commonInput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ ...commonInput,
+ type: 'page',
+ properties: pageProperties,
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ type: 'identify',
+ ...commonInput,
+ userId: 'testuserId1',
+ traits,
+ integrations: { All: true },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination,
+ },
+ ],
+ destType: 'ninetailed',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ...commonOutput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ {
+ ...commonOutput,
+ type: 'page',
+ properties: pageProperties,
+ },
+ {
+ type: 'identify',
+ ...commonOutput,
+ userId: 'testuserId1',
+ traits,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ { jobId: 3, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination,
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'ninetailed',
+ id: 'Test 1 - router',
+ description: 'Batch calls with one fail invalid event and two valid events',
+ scenario: 'Framework+Buisness',
+ successCriteria:
+ 'Two events should be transformed successfully and one should fail and status code should be 200',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ ...commonInput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ ...commonInput,
+ type: 'page',
+ properties: {
+ title: 'Sample Page',
+ url: 'https://example.com/?utm_campaign=example_campaign&utm_content=example_content',
+ path: '/',
+ hash: '',
+ search: '?utm_campaign=example_campaign&utm_content=example_content',
+ width: '1920',
+ height: '1080',
+ query: {
+ utm_campaign: 'example_campaign',
+ utm_content: 'example_content',
+ },
+ referrer: '',
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ type: 'identify',
+ ...commonInput,
+ traits,
+ integrations: { All: true },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination,
+ },
+ ],
+ destType: 'ninetailed',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ destination,
+ error: 'Missing required value from "userIdOnly"',
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ statTags: routerInstrumentationErrorStatTags,
+ statusCode: 400,
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ...commonOutput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ {
+ ...commonOutput,
+ type: 'page',
+ properties: pageProperties,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'ninetailed',
+ id: 'Test 2 - router',
+ description: 'Batch calls with 3 succesfull events and 1 failed event',
+ scenario: 'Framework+Buisness',
+ successCriteria:
+ '3 successful events should be distributed in two and 1 failed in one hence total batches should be 3 and status code should be 200',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ ...commonInput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ ...commonInput,
+ type: 'page',
+ properties: pageProperties,
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ type: 'identify',
+ ...commonInput,
+ userId: 'testuserId1',
+ traits,
+ integrations: { All: true },
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination,
+ },
+ {
+ message: {
+ type: 'identify',
+ ...commonInput,
+ traits,
+ integrations: { All: true },
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ destination,
+ },
+ ],
+ destType: 'ninetailed',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ destination,
+ error: 'Missing required value from "userIdOnly"',
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ statTags: routerInstrumentationErrorStatTags,
+ statusCode: 400,
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ ...commonOutput,
+ type: 'track',
+ event: 'product list viewed',
+ properties: trackProperties,
+ },
+ {
+ ...commonOutput,
+ type: 'page',
+ properties: pageProperties,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ files: {},
+ },
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination,
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://experience.ninetailed.co/v2/organizations/dummyOrganisationId/environments/main/events',
+ params: {},
+ body: {
+ FORM: {},
+ JSON: {
+ events: [
+ {
+ type: 'identify',
+ ...commonOutput,
+ userId: 'testuserId1',
+ traits,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: true,
+ statusCode: 200,
+ destination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+];
diff --git a/test/integrations/destinations/ometria/router/data.ts b/test/integrations/destinations/ometria/router/data.ts
index ef15eea5862..58f3a91d877 100644
--- a/test/integrations/destinations/ometria/router/data.ts
+++ b/test/integrations/destinations/ometria/router/data.ts
@@ -16,10 +16,7 @@ export const data = [
userId: 'userId1',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -53,10 +50,7 @@ export const data = [
field1: 'val1',
ip: '0.0.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.2.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.1' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
@@ -67,14 +61,10 @@ export const data = [
receivedAt: '2021-10-25T15:10:08.889+05:30',
request_ip: '[::1]',
anonymousId: '7138f7d9-5dd2-4337-805d-ca17be59dc8e',
- integrations: {
- Ometria: {
- listingId: 'test1',
- },
- },
+ integrations: { Ometria: { listingId: 'test1' } },
originalTimestamp: '2021-10-25T09:40:08.879Z',
},
- metadata: { jobId: 1 },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
ID: '1zzHtStW2ZPlullmz6L7DGnmk9V',
Name: 'ometria-dev',
@@ -131,10 +121,7 @@ export const data = [
userId: 'userId1',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -168,10 +155,7 @@ export const data = [
field1: 'val1',
ip: '0.0.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.2.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.1' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36',
@@ -181,15 +165,10 @@ export const data = [
timestamp: '2021-10-25T15:10:08.888+05:30',
receivedAt: '2021-10-25T15:10:08.889+05:30',
request_ip: '[::1]',
- integrations: {
- Ometria: {
- listingId: 'updatedId1',
- allowMarketing: true,
- },
- },
+ integrations: { Ometria: { listingId: 'updatedId1', allowMarketing: true } },
originalTimestamp: '2021-10-25T09:40:08.879Z',
},
- metadata: { jobId: 2 },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
ID: '1zzHtStW2ZPlullmz6L7DGnmk9V',
Name: 'ometria-dev',
@@ -255,9 +234,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://api.ometria.com/v2/push',
- headers: {
- 'X-Ometria-Auth': 'dummyApiKey',
- },
+ headers: { 'X-Ometria-Auth': 'dummyApiKey' },
params: {},
body: {
JSON: {},
@@ -271,12 +248,8 @@ export const data = [
files: {},
},
metadata: [
- {
- jobId: 1,
- },
- {
- jobId: 2,
- },
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
],
batched: true,
statusCode: 200,
diff --git a/test/integrations/destinations/one_signal/processor/data.ts b/test/integrations/destinations/one_signal/processor/data.ts
index 7f244aa7114..4171157aef7 100644
--- a/test/integrations/destinations/one_signal/processor/data.ts
+++ b/test/integrations/destinations/one_signal/processor/data.ts
@@ -702,7 +702,7 @@ export const data = [
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
userId: '',
},
statusCode: 200,
@@ -789,7 +789,7 @@ export const data = [
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
userId: '',
},
statusCode: 200,
@@ -870,7 +870,7 @@ export const data = [
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
userId: '',
},
statusCode: 200,
@@ -945,7 +945,7 @@ export const data = [
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
userId: '',
},
statusCode: 200,
@@ -1025,7 +1025,7 @@ export const data = [
headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
userId: '',
},
statusCode: 200,
diff --git a/test/integrations/destinations/one_signal/router/data.ts b/test/integrations/destinations/one_signal/router/data.ts
index 5f45d2e6243..a27da5a7456 100644
--- a/test/integrations/destinations/one_signal/router/data.ts
+++ b/test/integrations/destinations/one_signal/router/data.ts
@@ -19,19 +19,14 @@ export const data = [
allowedProperties: [],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
type: 'identify',
sentAt: '2021-01-03T17:02:53.195Z',
userId: 'user@27',
channel: 'web',
context: {
- os: {
- name: '',
- version: '1.12.3',
- },
+ os: { name: '', version: '1.12.3' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -46,18 +41,9 @@ export const data = [
userId: 'user@27',
},
locale: 'en-US',
- device: {
- token: 'token',
- id: 'id',
- type: 'ios',
- },
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ device: { token: 'token', id: 'id', type: 'ios' },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -75,34 +61,19 @@ export const data = [
emailDeviceType: false,
smsDeviceType: false,
eventAsTags: false,
- allowedProperties: [
- {
- propertyName: 'brand',
- },
- {
- propertyName: 'price',
- },
- ],
+ allowedProperties: [{ propertyName: 'brand' }, { propertyName: 'price' }],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
event: 'add_to_Cart',
type: 'track',
sentAt: '2021-01-03T17:02:53.195Z',
userId: 'user@27',
channel: 'web',
- properties: {
- brand: 'Zara',
- price: '12000',
- },
+ properties: { brand: 'Zara', price: '12000' },
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -110,13 +81,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -145,10 +111,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://onesignal.com/api/v1/players',
- headers: {
- Accept: 'application/json',
- 'Content-Type': 'application/json',
- },
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -180,10 +143,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://onesignal.com/api/v1/players',
- headers: {
- Accept: 'application/json',
- 'Content-Type': 'application/json',
- },
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -211,11 +171,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -233,32 +189,19 @@ export const data = [
body: {
XML: {},
FORM: {},
- JSON: {
- tags: {
- brand: 'Zara',
- price: '12000',
- add_to_Cart: true,
- },
- },
+ JSON: { tags: { brand: 'Zara', price: '12000', add_to_Cart: true } },
JSON_ARRAY: {},
},
type: 'REST',
files: {},
method: 'PUT',
params: {},
- headers: {
- Accept: 'application/json',
- 'Content-Type': 'application/json',
- },
+ headers: { Accept: 'application/json', 'Content-Type': 'application/json' },
version: '1',
endpoint:
- 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user@27',
+ 'https://onesignal.com/api/v1/apps/random-818c-4a28-b98e-6cd8a994eb22/users/user%4027',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -267,14 +210,7 @@ export const data = [
emailDeviceType: false,
smsDeviceType: false,
eventAsTags: false,
- allowedProperties: [
- {
- propertyName: 'brand',
- },
- {
- propertyName: 'price',
- },
- ],
+ allowedProperties: [{ propertyName: 'brand' }, { propertyName: 'price' }],
},
},
},
diff --git a/test/integrations/destinations/optimizely_fullstack/router/data.ts b/test/integrations/destinations/optimizely_fullstack/router/data.ts
index 1803881f307..270ac6873e4 100644
--- a/test/integrations/destinations/optimizely_fullstack/router/data.ts
+++ b/test/integrations/destinations/optimizely_fullstack/router/data.ts
@@ -18,11 +18,7 @@ export const data = [
channel: 'web',
properties: {},
context: {
- traits: {
- organization: 'RudderStack',
- fullName: 'John Doe',
- country: 'US',
- },
+ traits: { organization: 'RudderStack', fullName: 'John Doe', country: 'US' },
sessionId: 1685626914716,
},
rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
@@ -32,17 +28,11 @@ export const data = [
userId: 'userId123',
integrations: {
All: true,
- optimizely_fullstack: {
- variationId: 'test_variation_id_1',
- },
+ optimizely_fullstack: { variationId: 'test_variation_id_1' },
},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -50,20 +40,12 @@ export const data = [
experimentId: 'test_experiment_id',
trackKnownUsers: true,
attributeMapping: [
- {
- from: 'organization',
- to: 'company',
- },
- {
- from: 'fullName',
- to: 'name',
- },
+ { from: 'organization', to: 'company' },
+ { from: 'fullName', to: 'name' },
],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
},
{
message: {
@@ -72,34 +54,21 @@ export const data = [
userId: 'userId123',
channel: 'web',
context: {
- traits: {
- organization: 'RudderStack',
- fullName: 'John Doe',
- },
+ traits: { organization: 'RudderStack', fullName: 'John Doe' },
sessionId: 1685626914716,
},
rudderId: '5354b3f2-cb72-4355-a2b5-a298c3837c7d',
messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
timestamp: '2023-02-10T12:16:07.251Z',
- properties: {
- foo: 'bar',
- revenue: 123,
- quantity: 2,
- },
+ properties: { foo: 'bar', revenue: 123, quantity: 2 },
anonymousId: '856365b8-da4b-4c13-9098-84df18559446',
integrations: {
All: true,
- optimizely_fullstack: {
- variationId: 'test_variation_id_2',
- },
+ optimizely_fullstack: { variationId: 'test_variation_id_2' },
},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -108,30 +77,16 @@ export const data = [
trackKnownUsers: true,
anonymizeIp: true,
eventMapping: [
- {
- from: 'Product Searched',
- to: 'Searched',
- },
- {
- from: 'product_added',
- to: 'Product Added',
- },
+ { from: 'Product Searched', to: 'Searched' },
+ { from: 'product_added', to: 'Product Added' },
],
attributeMapping: [
- {
- from: 'organization',
- to: 'company',
- },
- {
- from: 'fullName',
- to: 'name',
- },
+ { from: 'organization', to: 'company' },
+ { from: 'fullName', to: 'name' },
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
},
{
message: {
@@ -139,33 +94,21 @@ export const data = [
userId: 'userId123',
channel: 'web',
context: {
- traits: {
- organization: 'RudderStack',
- fullName: 'John Doe',
- },
+ traits: { organization: 'RudderStack', fullName: 'John Doe' },
sessionId: 1685626914716,
},
rudderId: '5354b3f2-cb72-4355-a2b5-a298c3837c7d',
messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
timestamp: '2023-02-10T12:16:07.251Z',
- properties: {
- foo: 'bar',
- category: 'food',
- },
+ properties: { foo: 'bar', category: 'food' },
anonymousId: '856365b8-da4b-4c13-9098-84df18559446',
integrations: {
All: true,
- optimizely_fullstack: {
- variationId: 'test_variation_id_1',
- },
+ optimizely_fullstack: { variationId: 'test_variation_id_1' },
},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -176,20 +119,12 @@ export const data = [
trackCategorizedPages: true,
trackNamedPages: false,
pageMapping: [
- {
- from: 'meal',
- to: 'Viewed Meal Page',
- },
- {
- from: 'food',
- to: 'Product Added',
- },
+ { from: 'meal', to: 'Viewed Meal Page' },
+ { from: 'food', to: 'Product Added' },
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
},
{
message: {
@@ -201,19 +136,10 @@ export const data = [
rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
- integrations: {
- All: true,
- optimizely_fullstack: {
- variationId: '123',
- },
- },
+ integrations: { All: true, optimizely_fullstack: { variationId: '123' } },
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -223,9 +149,7 @@ export const data = [
trackNamedPages: false,
},
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
},
],
destType: 'optimizely_fullstack',
@@ -245,9 +169,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://logx.optimizely.com/v1/events',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -303,11 +225,7 @@ export const data = [
files: {},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -315,22 +233,12 @@ export const data = [
experimentId: 'test_experiment_id',
trackKnownUsers: true,
attributeMapping: [
- {
- from: 'organization',
- to: 'company',
- },
- {
- from: 'fullName',
- to: 'name',
- },
+ { from: 'organization', to: 'company' },
+ { from: 'fullName', to: 'name' },
],
},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
@@ -340,9 +248,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://logx.optimizely.com/v1/events',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -379,9 +285,7 @@ export const data = [
uuid: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
quantity: 2,
revenue: 12300,
- tags: {
- foo: 'bar',
- },
+ tags: { foo: 'bar' },
},
],
},
@@ -397,11 +301,7 @@ export const data = [
files: {},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -410,32 +310,16 @@ export const data = [
trackKnownUsers: true,
anonymizeIp: true,
eventMapping: [
- {
- from: 'Product Searched',
- to: 'Searched',
- },
- {
- from: 'product_added',
- to: 'Product Added',
- },
+ { from: 'Product Searched', to: 'Searched' },
+ { from: 'product_added', to: 'Product Added' },
],
attributeMapping: [
- {
- from: 'organization',
- to: 'company',
- },
- {
- from: 'fullName',
- to: 'name',
- },
+ { from: 'organization', to: 'company' },
+ { from: 'fullName', to: 'name' },
],
},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
{
@@ -445,9 +329,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://logx.optimizely.com/v1/events',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -468,10 +350,7 @@ export const data = [
key: 'Product Added',
timestamp: 1676031367251,
uuid: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
- tags: {
- foo: 'bar',
- category: 'food',
- },
+ tags: { foo: 'bar', category: 'food' },
},
],
},
@@ -487,11 +366,7 @@ export const data = [
files: {},
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
dataFileUrl: 'https://cdn.optimizely.com/datafiles/abc.json',
accountId: 'test_account_id',
@@ -502,32 +377,18 @@ export const data = [
trackCategorizedPages: true,
trackNamedPages: false,
pageMapping: [
- {
- from: 'meal',
- to: 'Viewed Meal Page',
- },
- {
- from: 'food',
- to: 'Product Added',
- },
+ { from: 'meal', to: 'Viewed Meal Page' },
+ { from: 'food', to: 'Product Added' },
],
},
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
{
batched: false,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
accountId: 'test_account_id',
campaignId: 'test_campagin_id',
@@ -539,11 +400,7 @@ export const data = [
},
error:
"Both 'Track Categorized Pages' and 'Track Named Pages' toggles are disabled in webapp. Please enable at one of them to send page/screen events to Optimizely.",
- metadata: [
- {
- jobId: 4,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
statTags: {
destType: 'OPTIMIZELY_FULLSTACK',
errorCategory: 'dataValidation',
diff --git a/test/integrations/destinations/ortto/processor/data.ts b/test/integrations/destinations/ortto/processor/data.ts
index e7c71c73552..715262e4474 100644
--- a/test/integrations/destinations/ortto/processor/data.ts
+++ b/test/integrations/destinations/ortto/processor/data.ts
@@ -1068,6 +1068,220 @@ export const data = [
},
},
},
+ {
+ name: 'ortto',
+ description: 'Track call for updating activities with no phone provided',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'ORTTO',
+ Config: {
+ privateApiKey: 'dummyApiKey',
+ instanceRegion: 'other',
+ orttoEventsMapping: [
+ {
+ rsEventName: 'RudderEvent',
+ orttoEventName: 'Ortto Event',
+ eventProperties: [
+ {
+ rudderProperty: 'RudderProp',
+ orttoProperty: 'OrttoProp',
+ type: 'text',
+ },
+ {
+ rudderProperty: 'RudderProp',
+ orttoProperty: 'OrttoProp',
+ type: 'longText',
+ },
+ ],
+ },
+ ],
+ orttoPersonAttributes: [
+ {
+ rudderTraits: 'ruddertrait0',
+ orttoAttribute: 'ortto attirbute0',
+ type: 'email',
+ },
+ {
+ rudderTraits: 'ruddertrait1',
+ orttoAttribute: 'ortto attirbute1',
+ type: 'email',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 2 },
+ message: {
+ anonymousId: '8d872292709c6fbe',
+ channel: 'mobile',
+ context: {
+ app: {
+ build: '1',
+ name: 'AMTestProject',
+ namespace: 'com.rudderstack.android.rudderstack.sampleAndroidApp',
+ version: '1.0',
+ },
+ device: {
+ id: '8d872292709c6fbe',
+ manufacturer: 'Google',
+ model: 'AOSPonIAEmulator',
+ name: 'generic_x86_arm',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '1.0.2',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Kolkata',
+ traits: {
+ ruddertrait0: 'abc',
+ ruddertrait1: 'def',
+ address: {
+ city: 'Kolkata',
+ country: 'India',
+ postalcode: '700096',
+ state: 'West bengal',
+ street: 'Park Street',
+ },
+ age: '30',
+ anonymousId: '8d872292709c6fbe',
+ birthday: '2020-05-26',
+ createDate: '18th March 2020',
+ description: 'Premium User for 3 years',
+ email: 'identify@test.com',
+ firstname: 'John',
+ gdpr: false,
+ userId: 'sample_user_id',
+ lastname: 'Sparrow',
+ name: 'John Sparrow',
+ id: 'sample_user_id',
+ username: 'john_sparrow',
+ },
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
+ },
+ event: 'RudderEvent',
+ integrations: {
+ All: true,
+ },
+ messageId: '1590431830915-73bed370-5889-436d-9a9e-0c0e0c809d06',
+ properties: {
+ revenue: '30',
+ RudderProp: 'USD',
+ quantity: '5',
+ test_key_2: {
+ test_child_key_1: 'test_child_value_1',
+ },
+ price: '58.0',
+ },
+ originalTimestamp: '2020-05-25T18:37:10.917Z',
+ type: 'track',
+ userId: 'sample_user_id',
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ pathSuffix: '',
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.ap3api.com/v1/activities/create',
+ headers: {
+ 'X-Api-Key': 'dummyApiKey',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ activities: [
+ {
+ fields: {
+ 'str::first': 'John',
+ 'str::last': 'Sparrow',
+ 'str::email': 'identify@test.com',
+ 'geo::city': {
+ name: 'Kolkata',
+ },
+ 'geo::country': {},
+ 'geo::region': {},
+ 'dtz::b': {
+ day: 26,
+ month: 5,
+ year: 2020,
+ },
+ 'str::postal': '700096',
+ 'str::language': 'en-US',
+ 'str::ei': 'sample_user_id',
+ 'bol::gdpr': false,
+ 'bol::p': false,
+ 'bol::sp': false,
+ 'str:cm:ortto-attirbute0': 'abc',
+ 'str:cm:ortto-attirbute1': 'def',
+ },
+ activity_id: 'act:cm:ortto-event',
+ attributes: {
+ 'str:cm:orttoprop': 'USD',
+ 'txt:cm:orttoprop': 'USD',
+ },
+ location: {},
+ },
+ ],
+ merge_by: ['str::ei', 'str::email'],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ jobId: 2,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
{
name: 'ortto',
description: 'Track call for updating activities',
diff --git a/test/integrations/destinations/ortto/router/data.ts b/test/integrations/destinations/ortto/router/data.ts
index 58a1dc3a5d9..cf5731be80f 100644
--- a/test/integrations/destinations/ortto/router/data.ts
+++ b/test/integrations/destinations/ortto/router/data.ts
@@ -55,7 +55,7 @@ export const data = [
Enabled: true,
Transformations: [],
},
- metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 1 },
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 1, userId: 'u1' },
message: {
anonymousId: '8d872292709c6fbe',
channel: 'mobile',
@@ -176,7 +176,7 @@ export const data = [
Enabled: true,
Transformations: [],
},
- metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 2 },
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 2, userId: 'u1' },
message: {
anonymousId: '8d872292709c6fbe',
channel: 'mobile',
@@ -327,6 +327,7 @@ export const data = [
{
destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
jobId: 1,
+ userId: 'u1',
},
],
batched: true,
@@ -438,6 +439,7 @@ export const data = [
{
destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
jobId: 2,
+ userId: 'u1',
},
],
batched: true,
diff --git a/test/integrations/destinations/pagerduty/router/data.ts b/test/integrations/destinations/pagerduty/router/data.ts
index 02fd53c6297..87761656f93 100644
--- a/test/integrations/destinations/pagerduty/router/data.ts
+++ b/test/integrations/destinations/pagerduty/router/data.ts
@@ -18,10 +18,7 @@ export const data = [
userId: 'user@45',
properties: {
source: 'rudder-webapp',
- customDetails: {
- 'ping time': '1500ms',
- 'load avg': 0.75,
- },
+ customDetails: { 'ping time': '1500ms', 'load avg': 0.75 },
imageURLs: [
{
src: 'https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg',
@@ -31,9 +28,7 @@ export const data = [
src: 'https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1',
alt: 'second image',
},
- {
- alt: 'third image',
- },
+ { alt: 'third image' },
],
linkURLs: [
{
@@ -44,20 +39,12 @@ export const data = [
href: 'https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack',
text: 'Stack Overflow Error',
},
- {
- text: 'Destructure Error',
- },
+ { text: 'Destructure Error' },
],
},
- integrations: {
- pagerduty: {
- type: 'changeEvent',
- },
- },
- },
- metadata: {
- jobId: 1,
+ integrations: { pagerduty: { type: 'changeEvent' } },
},
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
routingKey: '9552b56325dc490bd0139be85f7b8fac',
@@ -80,10 +67,7 @@ export const data = [
source: 'rudder-webapp',
group: 'destination',
class: 'connection settings',
- customDetails: {
- 'ping time': '1500ms',
- 'load avg': 0.75,
- },
+ customDetails: { 'ping time': '1500ms', 'load avg': 0.75 },
imageURLs: [
{
src: 'https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg',
@@ -93,9 +77,7 @@ export const data = [
src: 'https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1',
alt: 'second image',
},
- {
- alt: 'third image',
- },
+ { alt: 'third image' },
],
linkURLs: [
{
@@ -106,15 +88,11 @@ export const data = [
href: 'https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack',
text: 'Stack Overflow Error',
},
- {
- text: 'Destructure Error',
- },
+ { text: 'Destructure Error' },
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
routingKey: '9552b56325dc490bd0139be85f7b8fac',
@@ -138,10 +116,7 @@ export const data = [
source: 'rudder-webapp',
group: 'destination',
class: 'connection settings',
- customDetails: {
- 'ping time': '1500ms',
- 'load avg': 0.75,
- },
+ customDetails: { 'ping time': '1500ms', 'load avg': 0.75 },
imageURLs: [
{
src: 'https://static.s4be.cochrane.org/app/uploads/2017/04/shutterstock_531145954.jpg',
@@ -151,9 +126,7 @@ export const data = [
src: 'https://chart.googleapis.com/chart?chs=600x400&chd=t:6,2,9,5,2,5,7,4,8,2,1&cht=lc&chds=a&chxt=y&chm=D,0033FF,0,0,5,1',
alt: 'second image',
},
- {
- alt: 'third image',
- },
+ { alt: 'third image' },
],
linkURLs: [
{
@@ -164,15 +137,11 @@ export const data = [
href: 'https://www.techtarget.com/whatis/definition/stack-overflow#:~:text=A%20stack%20overflow%20is%20a,been%20allocated%20to%20that%20stack',
text: 'Stack Overflow Error',
},
- {
- text: 'Destructure Error',
- },
+ { text: 'Destructure Error' },
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
routingKey: '9552b56325dc490bd0139be85f7b8fac',
@@ -221,10 +190,7 @@ export const data = [
payload: {
source: 'rudder-webapp',
summary: 'Github CI/CD Triggered',
- custom_details: {
- 'load avg': 0.75,
- 'ping time': '1500ms',
- },
+ custom_details: { 'load avg': 0.75, 'ping time': '1500ms' },
},
routing_key: '9552b56325dc490bd0139be85f7b8fac',
},
@@ -234,9 +200,7 @@ export const data = [
files: {},
method: 'POST',
params: {},
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://events.pagerduty.com/v2/change/enqueue',
},
@@ -246,7 +210,7 @@ export const data = [
dedupKeyFieldIdentifier: 'properties.dedupKey',
},
},
- metadata: [{ jobId: 1 }],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
{
@@ -266,9 +230,7 @@ export const data = [
files: {},
method: 'POST',
params: {},
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
version: '1',
endpoint: 'https://events.pagerduty.com/v2/enqueue',
},
@@ -278,13 +240,13 @@ export const data = [
dedupKeyFieldIdentifier: 'properties.dedupKey',
},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
{
batched: false,
error: 'Events must be sent within ninety days of their occurrence',
- metadata: [{ jobId: 3 }],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 400,
statTags: {
destType: 'PAGERDUTY',
diff --git a/test/integrations/destinations/pardot/router/data.ts b/test/integrations/destinations/pardot/router/data.ts
index 7c2a2a11e36..0862666bbab 100644
--- a/test/integrations/destinations/pardot/router/data.ts
+++ b/test/integrations/destinations/pardot/router/data.ts
@@ -5,7 +5,7 @@ export const data = [
name: 'pardot',
description: 'Test 0',
feature: 'router',
- module: 'destination',
+ module: MODULES.DESTINATION,
version: 'v0',
input: {
request: {
@@ -25,9 +25,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -58,10 +56,8 @@ export const data = [
},
metadata: {
jobId: 1,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
message: {
type: 'identify',
@@ -70,10 +66,7 @@ export const data = [
userId: 'user12345',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -100,19 +93,11 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
- externalId: [
- {
- type: 'pardotId',
- id: 123435,
- },
- ],
+ externalId: [{ type: 'pardotId', id: 123435 }],
},
rudderId: 'fa2994a5-2a81-45fd-9919-fcf5596ad380',
messageId: 'e2d1a383-d9a2-4e03-a9dc-131d153c4d95',
@@ -121,9 +106,7 @@ export const data = [
receivedAt: '2021-11-15T14:06:42.497+05:30',
request_ip: '[::1]',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-09-08T11:10:45.466Z',
traits: {
email: 'Roger12@waltair.io',
@@ -149,9 +132,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -182,10 +163,8 @@ export const data = [
},
metadata: {
jobId: 2,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
message: {
type: 'identify',
@@ -194,10 +173,7 @@ export const data = [
userId: 'user12345',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -224,10 +200,7 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
@@ -239,9 +212,7 @@ export const data = [
receivedAt: '2021-11-15T14:06:42.497+05:30',
request_ip: '[::1]',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-09-08T11:10:45.466Z',
traits: {
email: 'Roger_12@waltair.io',
@@ -267,9 +238,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -300,10 +269,8 @@ export const data = [
},
metadata: {
jobId: 3,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
message: {
type: 'identify',
@@ -312,10 +279,7 @@ export const data = [
userId: 'user12345',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -342,19 +306,11 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
- externalId: [
- {
- type: 'crmfid',
- id: '00Q6r000002LKhTPVR',
- },
- ],
+ externalId: [{ type: 'crmfid', id: '00Q6r000002LKhTPVR' }],
},
rudderId: 'fa2994a5-2a81-45fd-9919-fcf5596ad380',
messageId: 'e2d1a383-d9a2-4e03-a9dc-131d153c4d95',
@@ -363,9 +319,7 @@ export const data = [
receivedAt: '2021-11-15T14:06:42.497+05:30',
request_ip: '[::1]',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-09-08T11:10:45.466Z',
traits: {
email: 'nick_kyrgios@waltair.io',
@@ -391,9 +345,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -424,10 +376,8 @@ export const data = [
},
metadata: {
jobId: 4,
- secret: {
- access_token: 'myExpiredToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myExpiredToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
message: {
type: 'identify',
@@ -436,10 +386,7 @@ export const data = [
userId: 'user12345',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -466,10 +413,7 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
@@ -481,9 +425,7 @@ export const data = [
receivedAt: '2021-11-15T14:06:42.497+05:30',
request_ip: '[::1]',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-09-08T11:10:45.466Z',
traits: {
email: 'rolex_waltair@mywebsite.io',
@@ -509,9 +451,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -540,10 +480,7 @@ export const data = [
Name: 'test destination',
Transformations: [],
},
- metadata: {
- jobId: 5,
- secret: null,
- },
+ metadata: { jobId: 5, secret: null, userId: 'u1' },
message: {
type: 'identify',
event: 'navigated user',
@@ -551,10 +488,7 @@ export const data = [
userId: 'user12345',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -581,10 +515,7 @@ export const data = [
innerHeight: 776,
},
traits: {},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.18',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.18' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
@@ -596,9 +527,7 @@ export const data = [
receivedAt: '2021-11-15T14:06:42.497+05:30',
request_ip: '[::1]',
anonymousId: 'd8b2ed61-7fa5-4ef8-bd92-6a506157c0cf',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2021-09-08T11:10:45.466Z',
traits: {
email: 'rolex_waltair@mywebsite.io',
@@ -649,10 +578,8 @@ export const data = [
metadata: [
{
jobId: 1,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
],
batched: false,
@@ -670,9 +597,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -731,10 +656,8 @@ export const data = [
metadata: [
{
jobId: 2,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
],
batched: false,
@@ -752,9 +675,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -813,10 +734,8 @@ export const data = [
metadata: [
{
jobId: 3,
- secret: {
- access_token: 'myToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
],
batched: false,
@@ -834,9 +753,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -895,10 +812,8 @@ export const data = [
metadata: [
{
jobId: 4,
- secret: {
- access_token: 'myExpiredToken',
- refresh_token: 'myRefreshToken',
- },
+ secret: { access_token: 'myExpiredToken', refresh_token: 'myRefreshToken' },
+ userId: 'u1',
},
],
batched: false,
@@ -916,9 +831,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -962,9 +875,7 @@ export const data = [
name: 'PARDOT',
displayName: 'Pardot',
config: {
- auth: {
- type: 'OAuth',
- },
+ auth: { type: 'OAuth' },
transformAt: 'router',
transformAtV1: 'router',
saveDestinationResponse: true,
@@ -993,12 +904,7 @@ export const data = [
Name: 'test destination',
Transformations: [],
},
- metadata: [
- {
- jobId: 5,
- secret: null,
- },
- ],
+ metadata: [{ jobId: 5, secret: null, userId: 'u1' }],
batched: false,
statusCode: 500,
error: 'OAuth - access token not found',
@@ -1046,9 +952,7 @@ export const data = [
},
},
files: {},
- params: {
- destination: 'pardot',
- },
+ params: { destination: 'pardot' },
},
method: 'POST',
},
@@ -1062,10 +966,7 @@ export const data = [
status: 200,
destinationResponse: {
response: {
- '@attributes': {
- stat: 'ok',
- version: 1,
- },
+ '@attributes': { stat: 'ok', version: 1 },
prospect: {
id: 123435,
campaign_id: 42213,
@@ -1112,11 +1013,7 @@ export const data = [
is_starred: null,
created_at: '2022-01-21 18:21:46',
updated_at: '2022-01-21 18:48:41',
- campaign: {
- id: 42113,
- name: 'Test',
- crm_fid: '7012y000000MNOCLL4',
- },
+ campaign: { id: 42113, name: 'Test', crm_fid: '7012y000000MNOCLL4' },
assigned_to: {
user: {
id: 38443703,
@@ -1142,26 +1039,10 @@ export const data = [
id: 304,
name: 'Default',
profile_criteria: [
- {
- id: 1500,
- name: 'Shipping Volume',
- matches: 'Unknown',
- },
- {
- id: 1502,
- name: 'Industry',
- matches: 'Unknown',
- },
- {
- id: 1506,
- name: 'Job Title',
- matches: 'Unknown',
- },
- {
- id: 1508,
- name: 'Department',
- matches: 'Unknown',
- },
+ { id: 1500, name: 'Shipping Volume', matches: 'Unknown' },
+ { id: 1502, name: 'Industry', matches: 'Unknown' },
+ { id: 1506, name: 'Job Title', matches: 'Unknown' },
+ { id: 1508, name: 'Department', matches: 'Unknown' },
],
},
visitors: null,
@@ -1207,9 +1088,7 @@ export const data = [
},
},
files: {},
- params: {
- destination: 'pardot',
- },
+ params: { destination: 'pardot' },
},
method: 'POST',
},
@@ -1223,10 +1102,7 @@ export const data = [
status: 201,
destinationResponse: {
response: {
- '@attributes': {
- stat: 'ok',
- version: 1,
- },
+ '@attributes': { stat: 'ok', version: 1 },
prospect: {
id: 123435,
campaign_id: 42213,
@@ -1273,11 +1149,7 @@ export const data = [
is_starred: null,
created_at: '2022-01-21 18:21:46',
updated_at: '2022-01-21 18:48:41',
- campaign: {
- id: 42113,
- name: 'Test',
- crm_fid: '7012y000000MNOCLL4',
- },
+ campaign: { id: 42113, name: 'Test', crm_fid: '7012y000000MNOCLL4' },
assigned_to: {
user: {
id: 38443703,
@@ -1303,26 +1175,10 @@ export const data = [
id: 304,
name: 'Default',
profile_criteria: [
- {
- id: 1500,
- name: 'Shipping Volume',
- matches: 'Unknown',
- },
- {
- id: 1502,
- name: 'Industry',
- matches: 'Unknown',
- },
- {
- id: 1506,
- name: 'Job Title',
- matches: 'Unknown',
- },
- {
- id: 1508,
- name: 'Department',
- matches: 'Unknown',
- },
+ { id: 1500, name: 'Shipping Volume', matches: 'Unknown' },
+ { id: 1502, name: 'Industry', matches: 'Unknown' },
+ { id: 1506, name: 'Job Title', matches: 'Unknown' },
+ { id: 1508, name: 'Department', matches: 'Unknown' },
],
},
visitors: null,
@@ -1367,9 +1223,7 @@ export const data = [
},
},
files: {},
- params: {
- destination: 'pardot',
- },
+ params: { destination: 'pardot' },
},
method: 'POST',
},
@@ -1383,10 +1237,7 @@ export const data = [
status: 200,
destinationResponse: {
response: {
- '@attributes': {
- stat: 'ok',
- version: 1,
- },
+ '@attributes': { stat: 'ok', version: 1 },
prospect: {
id: 123435,
campaign_id: 42213,
@@ -1433,11 +1284,7 @@ export const data = [
is_starred: null,
created_at: '2022-01-21 18:21:46',
updated_at: '2022-01-21 18:48:41',
- campaign: {
- id: 42113,
- name: 'Test',
- crm_fid: '7012y000000MNOCLL4',
- },
+ campaign: { id: 42113, name: 'Test', crm_fid: '7012y000000MNOCLL4' },
assigned_to: {
user: {
id: 38443703,
@@ -1463,26 +1310,10 @@ export const data = [
id: 304,
name: 'Default',
profile_criteria: [
- {
- id: 1500,
- name: 'Shipping Volume',
- matches: 'Unknown',
- },
- {
- id: 1502,
- name: 'Industry',
- matches: 'Unknown',
- },
- {
- id: 1506,
- name: 'Job Title',
- matches: 'Unknown',
- },
- {
- id: 1508,
- name: 'Department',
- matches: 'Unknown',
- },
+ { id: 1500, name: 'Shipping Volume', matches: 'Unknown' },
+ { id: 1502, name: 'Industry', matches: 'Unknown' },
+ { id: 1506, name: 'Job Title', matches: 'Unknown' },
+ { id: 1508, name: 'Department', matches: 'Unknown' },
],
},
visitors: null,
@@ -1528,9 +1359,7 @@ export const data = [
},
},
files: {},
- params: {
- destination: 'pardot',
- },
+ params: { destination: 'pardot' },
},
method: 'POST',
},
@@ -1545,11 +1374,7 @@ export const data = [
status: 500,
authErrorCategory: 'REFRESH_TOKEN',
destinationResponse: {
- '@attributes': {
- stat: 'fail',
- version: 1,
- err_code: 184,
- },
+ '@attributes': { stat: 'fail', version: 1, err_code: 184 },
err: 'access_token is invalid, unknown, or malformed: Inactive token',
},
statTags: {
@@ -1558,7 +1383,7 @@ export const data = [
destinationId: 'Non-determininable',
workspaceId: 'Non-determininable',
errorType: 'retryable',
- feature: 'dataDelivery',
+ feature: FEATURES.DATA_DELIVERY,
implementation: 'native',
module: 'destination',
},
diff --git a/test/integrations/destinations/persistiq/router/data.ts b/test/integrations/destinations/persistiq/router/data.ts
index 051a8a4bcac..ddb39b90280 100644
--- a/test/integrations/destinations/persistiq/router/data.ts
+++ b/test/integrations/destinations/persistiq/router/data.ts
@@ -26,33 +26,22 @@ export const data = [
Snippet: 'extra value',
extra: 'extraVal',
},
- externalId: [
- {
- type: 'persistIqLeadId',
- id: 'lel1c5u1wuk8',
- },
- ],
+ externalId: [{ type: 'persistIqLeadId', id: 'lel1c5u1wuk8' }],
},
traits: {
linkedinUrl: 'www.google.com',
dup: 'update',
status: 'open',
- company: {
- name: 'abc123',
- },
+ company: { name: 'abc123' },
},
},
destination: {
Config: {
apiKey: 'dummyApiKey',
- persistIqAttributesMapping: [
- {
- from: 'useroccupation',
- to: 'occupation',
- },
- ],
+ persistIqAttributesMapping: [{ from: 'useroccupation', to: 'occupation' }],
},
},
+ metadata: { jobId: 1, userId: 'u1' },
},
],
destType: 'persistiq',
@@ -102,7 +91,7 @@ export const data = [
persistIqAttributesMapping: [{ from: 'useroccupation', to: 'occupation' }],
},
},
- metadata: [null],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
],
diff --git a/test/integrations/destinations/pinterest_tag/processor/data.ts b/test/integrations/destinations/pinterest_tag/processor/data.ts
index 17ab83b2e98..65b33e77406 100644
--- a/test/integrations/destinations/pinterest_tag/processor/data.ts
+++ b/test/integrations/destinations/pinterest_tag/processor/data.ts
@@ -3569,4 +3569,129 @@ export const data = [
},
},
},
+ {
+ name: 'pinterest_tag',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ description: 'Any other format of event except string should be aborted',
+ message: {
+ type: 'track',
+ event: [1, 2, 3],
+ sentAt: '2020-08-14T05:30:30.118Z',
+ channel: 'web',
+ context: {
+ source: 'test',
+ userAgent: 'chrome',
+ traits: {
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ email: 'abc@gmail.com',
+ phone: '+1234589947',
+ ge: 'male',
+ db: '19950715',
+ lastname: 'Rudderlabs',
+ firstName: 'Test',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
+ },
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
+ },
+ messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
+ timestamp: '2020-08-14T05:30:30.118Z',
+ properties: {
+ tax: 2,
+ total: 27.5,
+ coupon: 'hasbros',
+ revenue: 48,
+ price: 25,
+ quantity: 2,
+ currency: 'USD',
+ discount: 2.5,
+ order_id: '50314b8e9bcf000000000000',
+ requestIP: '123.0.0.0',
+ optOutType: 'LDP',
+ products: [
+ {
+ sku: '45790-32',
+ url: 'https://www.example.com/product/path',
+ name: 'Monopoly: 3rd Edition',
+ price: 19,
+ category: 'Games',
+ quantity: 1,
+ image_url: 'https:///www.example.com/product/path.jpg',
+ product_id: '507f1f77bcf86cd799439011',
+ },
+ {
+ sku: '46493-32',
+ name: 'Uno Card Game',
+ price: 3,
+ category: 'Games',
+ quantity: 2,
+ product_id: '505bd76785ebb509fc183733',
+ },
+ ],
+ shipping: 3,
+ subtotal: 22.5,
+ affiliation: 'Google Store',
+ checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
+ },
+ anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
+ integrations: { All: true },
+ },
+ destination: {
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'PINTEREST_TAG',
+ Config: {
+ sendAsTestEvent: false,
+ tagId: '123456789',
+ apiVersion: 'newApi',
+ adAccountId: 'accountId123',
+ conversionToken: 'conversionToken123',
+ appId: '429047995',
+ enhancedMatch: true,
+ enableDeduplication: true,
+ deduplicationKey: 'messageId',
+ sendingUnHashedData: true,
+ sendExternalId: true,
+ customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }],
+ eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }],
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' },
+ },
+ ],
+ method: 'POST',
+ },
+ pathSuffix: '',
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Event is a required field and should be a string: Workflow: procWorkflow, Step: eventNames, ChildStep: undefined, OriginalError: Event is a required field and should be a string',
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' },
+ statTags: {
+ destType: 'PINTEREST_TAG',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/pinterest_tag/router/data.ts b/test/integrations/destinations/pinterest_tag/router/data.ts
index e004be25f00..c02b1781e32 100644
--- a/test/integrations/destinations/pinterest_tag/router/data.ts
+++ b/test/integrations/destinations/pinterest_tag/router/data.ts
@@ -26,20 +26,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -81,14 +71,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 1,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 1, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -103,30 +88,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -150,20 +119,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -204,14 +163,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 2,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 2, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -226,30 +180,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -273,20 +211,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -308,14 +236,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 3,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 3, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -330,30 +253,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -377,20 +284,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -431,14 +328,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 4,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 4, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -453,30 +345,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -500,20 +376,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -554,14 +420,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 5,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 5, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -576,30 +437,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -623,20 +468,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -677,14 +512,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 6,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 6, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -699,30 +529,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -736,9 +550,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://ct.pinterest.com/events/v3',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -769,14 +581,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -786,10 +592,7 @@ export const data = [
},
files: {},
},
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 7,
- },
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 7, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -804,30 +607,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -851,9 +638,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://ct.pinterest.com/events/v3',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -889,14 +674,8 @@ export const data = [
opt_out_type: 'LDP',
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -931,14 +710,8 @@ export const data = [
opt_out_type: 'LDP',
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -972,14 +745,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1012,12 +779,7 @@ export const data = [
order_id: '50314b8e9bcf000000000000',
num_items: 2,
content_ids: ['123'],
- contents: [
- {
- quantity: 2,
- item_price: '25',
- },
- ],
+ contents: [{ quantity: 2, item_price: '25' }],
},
},
{
@@ -1050,14 +812,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1091,14 +847,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1132,14 +882,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1152,30 +896,12 @@ export const data = [
files: {},
},
metadata: [
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 1,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 2,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 3,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 4,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 6,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 7,
- },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 1, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 2, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 3, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 4, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 6, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 7, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -1193,30 +919,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1224,12 +934,7 @@ export const data = [
},
},
{
- metadata: [
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 5,
- },
- ],
+ metadata: [{ destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 5, userId: 'u1' }],
statTags: {
destType: 'PINTEREST_TAG',
feature: 'router',
@@ -1255,30 +960,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1317,20 +1006,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -1372,14 +1051,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 8,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 8, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -1396,30 +1070,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1443,20 +1101,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -1497,14 +1145,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 9,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 9, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -1521,30 +1164,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1568,20 +1195,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -1622,14 +1239,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 10,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 10, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -1647,30 +1259,14 @@ export const data = [
enhancedMatch: true,
sendAsCustomEvent: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1732,14 +1328,8 @@ export const data = [
opt_out_type: 'LDP',
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1773,14 +1363,8 @@ export const data = [
opt_out_type: 'LDP',
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1813,14 +1397,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1853,14 +1431,8 @@ export const data = [
num_items: 3,
content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'],
contents: [
- {
- quantity: 1,
- item_price: '19',
- },
- {
- quantity: 2,
- item_price: '3',
- },
+ { quantity: 1, item_price: '19' },
+ { quantity: 2, item_price: '3' },
],
},
},
@@ -1873,18 +1445,9 @@ export const data = [
files: {},
},
metadata: [
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 8,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 9,
- },
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 10,
- },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 8, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 9, userId: 'u1' },
+ { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 10, userId: 'u1' },
],
batched: true,
statusCode: 200,
@@ -1904,30 +1467,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'WatchVideo',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'WatchVideo' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -1966,20 +1513,10 @@ export const data = [
db: '19950715',
lastname: 'Rudderlabs',
firstName: 'Test',
- address: {
- city: 'Kolkata',
- state: 'WB',
- zip: '700114',
- country: 'IN',
- },
- },
- device: {
- advertisingId: 'abc123',
- },
- library: {
- name: 'rudder-sdk-ruby-sync',
- version: '1.0.6',
+ address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' },
},
+ device: { advertisingId: 'abc123' },
+ library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' },
},
messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9',
timestamp: '2020-08-14T05:30:30.118Z',
@@ -2020,14 +1557,9 @@ export const data = [
checkout_id: 'fksdjfsdjfisjf9sdfjsd9f',
},
anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1',
- integrations: {
- All: true,
- },
- },
- metadata: {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 5,
+ integrations: { All: true },
},
+ metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 5, userId: 'u1' },
destination: {
DestinationDefinition: { Config: { cdkV2Enabled: true } },
ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
@@ -2042,30 +1574,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'Watch Video',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'Watch Video' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
@@ -2084,12 +1600,7 @@ export const data = [
body: {
output: [
{
- metadata: [
- {
- destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
- jobId: 5,
- },
- ],
+ metadata: [{ destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', jobId: 5, userId: 'u1' }],
batched: false,
statusCode: 400,
error: 'message type identify is not supported',
@@ -2115,30 +1626,14 @@ export const data = [
deduplicationKey: 'messageId',
enhancedMatch: true,
customProperties: [
- {
- properties: 'presentclass',
- },
- {
- properties: 'presentgrade',
- },
+ { properties: 'presentclass' },
+ { properties: 'presentgrade' },
],
eventsMapping: [
- {
- from: 'ABC Searched',
- to: 'Watch Video',
- },
- {
- from: 'ABC Searched',
- to: 'Signup',
- },
- {
- from: 'User Signup',
- to: 'Signup',
- },
- {
- from: 'User Created',
- to: 'Signup',
- },
+ { from: 'ABC Searched', to: 'Watch Video' },
+ { from: 'ABC Searched', to: 'Signup' },
+ { from: 'User Signup', to: 'Signup' },
+ { from: 'User Created', to: 'Signup' },
],
},
Enabled: true,
diff --git a/test/integrations/destinations/pipedream/router/data.ts b/test/integrations/destinations/pipedream/router/data.ts
index fa71e6a592d..3e05ad95516 100644
--- a/test/integrations/destinations/pipedream/router/data.ts
+++ b/test/integrations/destinations/pipedream/router/data.ts
@@ -19,25 +19,15 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
additional_bet_index: 0,
@@ -100,21 +90,13 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
pipedreamUrl: 'http://6b0e6a60.ngrok.io',
headers: [
- {
- from: '',
- to: '',
- },
- {
- from: 'test2',
- to: 'value2',
- },
+ { from: '', to: '' },
+ { from: 'test2', to: 'value2' },
],
},
},
@@ -157,9 +139,7 @@ export const data = [
versionSessionCount: 2,
game_name: 'FireEagleSlots',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
event: 'spin_result',
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
@@ -172,18 +152,10 @@ export const data = [
},
traits: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
- },
- os: {
- version: '8.1.0',
- name: 'android',
- },
- network: {
- carrier: 'Banglalink',
+ address: { city: 'Dhaka', country: 'Bangladesh' },
},
+ os: { version: '8.1.0', name: 'android' },
+ network: { carrier: 'Banglalink' },
},
type: 'track',
properties: {
@@ -230,34 +202,21 @@ export const data = [
files: {},
endpoint: 'http://6b0e6a60.ngrok.io',
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- headers: {
- 'content-type': 'application/json',
- test2: 'value2',
- },
+ headers: { 'content-type': 'application/json', test2: 'value2' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
pipedreamUrl: 'http://6b0e6a60.ngrok.io',
headers: [
- {
- from: '',
- to: '',
- },
- {
- from: 'test2',
- to: 'value2',
- },
+ { from: '', to: '' },
+ { from: 'test2', to: 'value2' },
],
},
},
@@ -287,25 +246,15 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
additional_bet_index: 0,
@@ -368,14 +317,8 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
- destination: {
- Config: {
- pipedreamUrl: 'https://6b0e6a60.ngrok.io/n',
- },
- },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: { Config: { pipedreamUrl: 'https://6b0e6a60.ngrok.io/n' } },
},
],
destType: 'pipedream',
@@ -415,9 +358,7 @@ export const data = [
versionSessionCount: 2,
game_name: 'FireEagleSlots',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
event: 'spin_result',
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
@@ -430,18 +371,10 @@ export const data = [
},
traits: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
- },
- os: {
- version: '8.1.0',
- name: 'android',
- },
- network: {
- carrier: 'Banglalink',
+ address: { city: 'Dhaka', country: 'Bangladesh' },
},
+ os: { version: '8.1.0', name: 'android' },
+ network: { carrier: 'Banglalink' },
},
type: 'track',
properties: {
@@ -488,26 +421,16 @@ export const data = [
files: {},
endpoint: 'https://6b0e6a60.ngrok.io/n',
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- headers: {
- 'content-type': 'application/json',
- },
+ headers: { 'content-type': 'application/json' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- pipedreamUrl: 'https://6b0e6a60.ngrok.io/n',
- },
- },
+ destination: { Config: { pipedreamUrl: 'https://6b0e6a60.ngrok.io/n' } },
},
],
},
diff --git a/test/integrations/destinations/posthog/router/data.ts b/test/integrations/destinations/posthog/router/data.ts
index f69b4bfbdd2..dab8ba8b1ce 100644
--- a/test/integrations/destinations/posthog/router/data.ts
+++ b/test/integrations/destinations/posthog/router/data.ts
@@ -16,9 +16,7 @@ export const data = [
yourInstance: 'https://app.posthog.com/',
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
event: 'event-alias',
context: {
@@ -29,13 +27,8 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
app: {
build: '1.0.0',
name: 'RudderLabs JavaScript SDK',
@@ -43,10 +36,7 @@ export const data = [
version: '1.1.7',
},
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
@@ -74,18 +64,13 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://app.posthog.com/batch',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
properties: {
$set: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
$os: 'android',
@@ -117,11 +102,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -148,13 +129,9 @@ export const data = [
input: [
{
destination: {
- Config: {
- teamApiKey: 'K_HlByO3IE73-Tz4ch1LNDs0JGdwbknNGolFc4HdoAE',
- },
- },
- metadata: {
- jobId: 2,
+ Config: { teamApiKey: 'K_HlByO3IE73-Tz4ch1LNDs0JGdwbknNGolFc4HdoAE' },
},
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
event: 'Product Brought',
@@ -166,18 +143,10 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
@@ -241,9 +210,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://app.posthog.com/batch',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -252,10 +219,7 @@ export const data = [
messageId: 'e4408cb8-16dd-41e9-a313-a7a9cdc4bac5',
properties: {
$set: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
$os: 'android',
@@ -316,17 +280,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- teamApiKey: 'K_HlByO3IE73-Tz4ch1LNDs0JGdwbknNGolFc4HdoAE',
- },
+ Config: { teamApiKey: 'K_HlByO3IE73-Tz4ch1LNDs0JGdwbknNGolFc4HdoAE' },
},
},
],
diff --git a/test/integrations/destinations/profitwell/network.ts b/test/integrations/destinations/profitwell/network.ts
new file mode 100644
index 00000000000..e4e7247c74d
--- /dev/null
+++ b/test/integrations/destinations/profitwell/network.ts
@@ -0,0 +1,94 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/pwu_Oea7HXV3bnTP/',
+ method: 'GET',
+ },
+ httpRes: {
+ data: [
+ {
+ user_id: 'pwu_Oea7HXV3bnTP',
+ subscription_id: 'pws_FecTCEyo17rV',
+ user_alias: 'spiderman_1a',
+ subscription_alias: 'spiderman_sub_1a',
+ email: 'spiderman@profitwell.com',
+ plan_id: 'web_plan',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: 5000,
+ effective_date: 1514764800,
+ meta: {},
+ },
+ ],
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/spiderman_1a/',
+ method: 'GET',
+ },
+ httpRes: {
+ data: [
+ {
+ user_id: 'pwu_Oea7HXV3bnTP',
+ subscription_id: 'pws_FecTCEyo17rV',
+ user_alias: 'spiderman_1a',
+ subscription_alias: 'spiderman_sub_1a',
+ email: 'spiderman@profitwell.com',
+ plan_id: 'web_plan',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: 5000,
+ effective_date: 1514764800,
+ meta: {},
+ },
+ ],
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/23453/',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 404,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/sp_245/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/1234/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/samual/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+];
diff --git a/test/integrations/destinations/profitwell/processor/data.ts b/test/integrations/destinations/profitwell/processor/data.ts
new file mode 100644
index 00000000000..58bd2ed35fb
--- /dev/null
+++ b/test/integrations/destinations/profitwell/processor/data.ts
@@ -0,0 +1,1241 @@
+export const data = [
+ {
+ name: 'profitwell',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'userId or userAlias is required for identify',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: '23453',
+ },
+ ],
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No user found for profitwell user_id',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_alias: 'samual',
+ email: 'sample@sample.com',
+ plan_id: '23',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: '23',
+ user_alias: 'sp_245',
+ effective_date: 1630917906,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'subscriptionId or subscriptionAlias is required for identify',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: '1234',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No user found for profitwell user_id',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_alias: 'samual',
+ email: 'sample@sample.com',
+ plan_id: '23',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: '23',
+ user_id: 'pwu_Oea7HXV3bnTP',
+ user_alias: 'sp_245',
+ effective_date: 1630917906,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17rV',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from ["traits.effectiveDate","context.traits.effectiveDate"]',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17rV',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ effectiveDate: '1609748705',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/pws_FecTCEyo17rV/',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ params: {},
+ body: {
+ JSON: {
+ plan_id: '23',
+ plan_interval: 'month',
+ value: '23',
+ status: 'active',
+ effective_date: 1609748705,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17rV',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'monthly',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ effectiveDate: '1609748705',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'invalid format for planInterval. Aborting',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17rV',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'activate',
+ effectiveDate: '1609748705',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/pws_FecTCEyo17rV/',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ params: {},
+ body: {
+ JSON: {
+ plan_id: '23',
+ plan_interval: 'month',
+ value: '23',
+ effective_date: 1609748705,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {},
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17rV',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ effectiveDate: '1609748705',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Private API Key not found. Aborting.',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'profitwellUserId',
+ id: 'pwu_Oea7HXV3bnTP',
+ },
+ {
+ type: 'profitwellSubscriptionId',
+ id: 'pws_FecTCEyo17',
+ },
+ ],
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ effectiveDate: '1609748705',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Profitwell subscription_id not found',
+ statTags: {
+ destType: 'PROFITWELL',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'processor',
+ implementation: 'native',
+ meta: 'instrumentation',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'profitwell',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ },
+ message: {
+ channel: 'web',
+ userId: 'sp_245',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.9',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.9',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ effectiveDate: 1609748705,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
+ },
+ messageId: '6a5f38c0-4e75-4268-a066-2b73fbcad01f',
+ originalTimestamp: '2021-01-04T08:25:04.780Z',
+ receivedAt: '2021-01-04T13:55:04.799+05:30',
+ request_ip: '[::1]',
+ rudderId: '79881a62-980a-4d76-89ca-7099440f8c13',
+ sentAt: '2021-01-04T08:25:04.781Z',
+ timestamp: '2021-09-06T14:15:06.798+05:30',
+ type: 'identify',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ params: {},
+ body: {
+ JSON: {
+ subscription_alias: 'samual',
+ email: 'sample@sample.com',
+ plan_id: '23',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: '23',
+ effective_date: 1609748705,
+ user_alias: 'sp_245',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/profitwell/router/data.ts b/test/integrations/destinations/profitwell/router/data.ts
new file mode 100644
index 00000000000..b308155dae8
--- /dev/null
+++ b/test/integrations/destinations/profitwell/router/data.ts
@@ -0,0 +1,99 @@
+export const data = [
+ {
+ name: 'profitwell',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: { Config: { privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62' } },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'identify',
+ userId: 'samual',
+ traits: {
+ email: 'sample@sample.com',
+ planId: '23',
+ planInterval: 'month',
+ planCurrency: 'usd',
+ value: '23',
+ subscriptionAlias: 'samual',
+ status: 'active',
+ },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ destType: 'profitwell',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ subscription_alias: 'samual',
+ email: 'sample@sample.com',
+ plan_id: '23',
+ plan_interval: 'month',
+ plan_currency: 'usd',
+ status: 'active',
+ value: '23',
+ user_alias: 'samual',
+ effective_date: 1571043797,
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: '9270161a8e5abaa0e56efddfd9dbcb62',
+ },
+ version: '1',
+ endpoint: 'https://api.profitwell.com/v2/subscriptions/',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: { Config: { privateApiKey: '9270161a8e5abaa0e56efddfd9dbcb62' } },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/rakuten/dataDelivery/data.ts b/test/integrations/destinations/rakuten/dataDelivery/data.ts
new file mode 100644
index 00000000000..ff40954fdff
--- /dev/null
+++ b/test/integrations/destinations/rakuten/dataDelivery/data.ts
@@ -0,0 +1,204 @@
+import { endpoint, commonOutputHeaders } from '../processor/commonConfig';
+const commonParams = {
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500',
+ qlist: '|5',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+};
+export const data = [
+ {
+ name: 'rakuten',
+ description: 'Test 0: Failure response from rakuten for invalid mid',
+ feature: 'dataDelivery',
+ module: 'destination',
+ scenario: 'Framework',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'invalid_mid',
+ ...commonParams,
+ },
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'configuration',
+ destType: 'RAKUTEN',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ destinationResponse: {
+ response:
+ 'HTTP Status 400 – Bad RequestHTTP Status 400 – Bad Request
',
+ status: 400,
+ rudderJobMetadata: [
+ {
+ jobId: 2,
+ attemptNum: 0,
+ userId: '',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ ],
+ },
+ authErrorCategory: '',
+ message: 'Request failed with status: 400 due to invalid Marketing Id',
+ },
+ },
+ },
+ {
+ name: 'rakuten',
+ description: 'Test 1: Failure response from rakuten for access denied for rakuten mid',
+ feature: 'dataDelivery',
+ scenario: 'Framework',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'access_denied_for_mid',
+ ...commonParams,
+ },
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'configuration',
+ destType: 'RAKUTEN',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ destinationResponse: {
+ response: 'Access denied',
+ status: 200,
+ rudderJobMetadata: [
+ {
+ jobId: 2,
+ attemptNum: 0,
+ userId: '',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ ],
+ },
+ authErrorCategory: '',
+ message:
+ 'Request failed with status: 200 due to Access denied. Can you try to enable pixel tracking for this mid.',
+ },
+ },
+ },
+ {
+ name: 'rakuten',
+ description: 'Test 2: Failure response from rakuten for bad records>0',
+ feature: 'dataDelivery',
+ scenario: 'Framework',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'valid_mid_with_bad_records',
+ ...commonParams,
+ },
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ statTags: {
+ errorCategory: 'network',
+ errorType: 'aborted',
+ destType: 'RAKUTEN',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'dataDelivery',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ destinationResponse: {
+ response:
+ '14340739143103',
+ status: 200,
+ rudderJobMetadata: [
+ {
+ jobId: 2,
+ attemptNum: 0,
+ userId: '',
+ sourceId: 'dummySourceId',
+ destinationId: 'dummyDestId',
+ workspaceId: 'dummyWorkspaceId',
+ },
+ ],
+ },
+ authErrorCategory: '',
+ message: 'Request failed with status: 200 with number of bad records 3',
+ },
+ },
+ },
+ {
+ name: 'rakuten',
+ description: 'Test 3: Success response from rakuten with good records > 0',
+ feature: 'dataDelivery',
+ scenario: 'Framework',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'valid_mid_with_good_records',
+ ...commonParams,
+ },
+ userId: '',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ destinationResponse:
+ 'uniqueId30',
+ message: '[RAKUTEN Response Handler] - Request Processed Successfully',
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/rakuten/network.ts b/test/integrations/destinations/rakuten/network.ts
new file mode 100644
index 00000000000..a9770d83e26
--- /dev/null
+++ b/test/integrations/destinations/rakuten/network.ts
@@ -0,0 +1,102 @@
+export const networkCallsData = [
+ {
+ description: 'When mid is invalid',
+ httpReq: {
+ url: 'https://track.linksynergy.com/ep',
+ params: {
+ mid: 'invalid_mid',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500',
+ qlist: '|5',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ },
+ headers: {
+ Accept: 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ method: 'GET',
+ },
+ httpRes: {
+ status: 400,
+ data: 'HTTP Status 400 – Bad RequestHTTP Status 400 – Bad Request
',
+ },
+ },
+ {
+ description: 'When mid is valid but there is no access',
+ httpReq: {
+ url: 'https://track.linksynergy.com/ep',
+ params: {
+ mid: 'access_denied_for_mid',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500',
+ qlist: '|5',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ },
+ headers: {
+ Accept: 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: 'Access denied',
+ },
+ },
+ {
+ description: 'When record along with mid is valid',
+ httpReq: {
+ url: 'https://track.linksynergy.com/ep',
+ params: {
+ mid: 'valid_mid_with_good_records',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500',
+ qlist: '|5',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ },
+ headers: {
+ Accept: 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: 'uniqueId30',
+ },
+ },
+ {
+ description: 'When records are invalid and mid is valid',
+ httpReq: {
+ url: 'https://track.linksynergy.com/ep',
+ params: {
+ mid: 'valid_mid_with_bad_records',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500',
+ qlist: '|5',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ },
+ headers: {
+ Accept: 'application/json',
+ 'Content-Type': 'application/json',
+ },
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: 'uniqueId03',
+ },
+ },
+];
diff --git a/test/integrations/destinations/rakuten/processor/commonConfig.ts b/test/integrations/destinations/rakuten/processor/commonConfig.ts
new file mode 100644
index 00000000000..e7e2af7fbd1
--- /dev/null
+++ b/test/integrations/destinations/rakuten/processor/commonConfig.ts
@@ -0,0 +1,65 @@
+export const destination = {
+ ID: 'random_id',
+ Name: 'rakuten',
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ mid: 'dummyMarketingId',
+ },
+};
+export const endpoint = 'https://track.linksynergy.com/ep';
+export const commonOutputHeaders = {
+ accept: 'application/json',
+ 'content-type': 'application/json',
+};
+export const singleProductWithAllProperties = {
+ sku: 'ABC123',
+ amount: 20,
+ quantity: 5,
+ name: 'SampleProduct',
+ brand: 'SampleBrand',
+ coupon: 'SALE20',
+ categoryId: '12345',
+ category: 'Electronics',
+ discountAmount: 10.5,
+ discountType: 'Percentage',
+ isClearance: 'Y',
+ isMarketPlace: 'N',
+ isSale: 'Y',
+ itmStatus: 'In Stock',
+ margin: 0.15,
+ markdown: 5.0,
+ shipId: 'SHIP123',
+ shipBy: 'Express',
+ taxExempt: 'N',
+ sequence: '123',
+ isComm: 'Y',
+};
+export const commonProperties = {
+ orderId: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ landTime: '20240129_1200',
+ date: '20240129_1300',
+ altord: 'SampleAlternateOrderId',
+ currency: 'INR',
+ creditCardType: 'Visa',
+ commReason: 'SampleCommReason',
+ isComm: 'Y',
+ consumed: '20240129_1400',
+ coupon: 'SampleCoupon',
+ custId: 'SampleCustomerId',
+ custScore: 'A',
+ custStatus: 'New',
+ dId: 'SampleDeviceId',
+ disamt: '50.00',
+ ordStatus: 'Pending',
+ segment: 'SampleSegment',
+ shipcountry: 'USA',
+ shipped: '20240129_1500',
+ sitename: 'SampleSiteName',
+ storeId: '12345',
+ storecat: 'Electronics',
+};
diff --git a/test/integrations/destinations/rakuten/processor/data.ts b/test/integrations/destinations/rakuten/processor/data.ts
new file mode 100644
index 00000000000..bdce4e850ec
--- /dev/null
+++ b/test/integrations/destinations/rakuten/processor/data.ts
@@ -0,0 +1,3 @@
+import { transformationFailures } from './transformationFailure';
+import { trackSuccess } from './track';
+export const data = [...trackSuccess, ...transformationFailures];
diff --git a/test/integrations/destinations/rakuten/processor/track.ts b/test/integrations/destinations/rakuten/processor/track.ts
new file mode 100644
index 00000000000..49b26e46581
--- /dev/null
+++ b/test/integrations/destinations/rakuten/processor/track.ts
@@ -0,0 +1,452 @@
+import {
+ destination,
+ commonOutputHeaders,
+ commonProperties,
+ endpoint,
+ singleProductWithAllProperties,
+} from './commonConfig';
+import { transformResultBuilder } from '../../../testUtils';
+export const trackSuccess = [
+ {
+ id: 'rakuten-test-track-success-1',
+ name: 'rakuten',
+ description:
+ 'Track call with properties.products with all properties in payload and one product containing all product properties and other containg some',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only properties and product payload and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ ...commonProperties,
+ products: [
+ { ...singleProductWithAllProperties },
+ {
+ sku: 'custom sku 1',
+ quantity: 5,
+ amount: 25,
+ name: 'name_1',
+ },
+ {
+ sku: 'custom sku 2',
+ name: 'SampleProduct',
+ quantity: 1,
+ amount: 30,
+ coupon: 'SALE50',
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ output: transformResultBuilder({
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'dummyMarketingId',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '2000|2500|3000',
+ brandlist: 'SampleBrand||',
+ catidlist: '12345||',
+ catlist: 'Electronics||',
+ couponlist: 'SALE20||SALE50',
+ disamtlist: '10.5||',
+ distypelist: 'Percentage||',
+ ismarketplacelist: 'N||',
+ sequencelist: '123||',
+ shipbylist: 'Express||',
+ shipidlist: 'SHIP123||',
+ qlist: '5|5|1',
+ marginlist: '0.15||',
+ markdownlist: '5||',
+ taxexemptlist: 'N||',
+ namelist: 'SampleProduct|name_1|SampleProduct',
+ skulist: 'ABC123|custom sku 1|custom sku 2',
+ issalelist: 'Y||',
+ itmstatuslist: 'In Stock||',
+ isclearancelist: 'Y||',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ date: '20240129_1300',
+ altord: 'SampleAlternateOrderId',
+ cur: 'INR',
+ cc: 'Visa',
+ commreason: 'SampleCommReason',
+ iscomm: 'Y',
+ consumed: '20240129_1400',
+ coupon: 'SampleCoupon',
+ custid: 'SampleCustomerId',
+ custscore: 'A',
+ custstatus: 'New',
+ did: 'SampleDeviceId',
+ disamt: '50.00',
+ ordstatus: 'Pending',
+ segment: 'SampleSegment',
+ shipcountry: 'USA',
+ shipped: '20240129_1500',
+ sitename: 'SampleSiteName',
+ storeid: '12345',
+ storecat: 'Electronics',
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-track-success-2',
+ name: 'rakuten',
+ description:
+ 'Track call with properties.products and no event in payload and products containing amount,price and quantity',
+ scenario: 'Business+Framework',
+ successCriteria:
+ 'Response should contain only properties and product payload and amount to be calculated from price*quantity where amount is not present and quantity taken as 1 by default and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ ...commonProperties,
+ products: [
+ {
+ sku: 'custom sku 0',
+ amount: '125',
+ quantity: 1,
+ name: 'name_1',
+ },
+ {
+ sku: 'custom sku 1',
+ quantity: 5,
+ price: 25,
+ name: 'name_2',
+ },
+ {
+ sku: 'custom sku 2',
+ name: 'SampleProduct',
+ price: 30,
+ quantity: 1,
+ coupon: 'SALE50',
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ output: transformResultBuilder({
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'dummyMarketingId',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '12500|12500|3000',
+ couponlist: '||SALE50',
+ namelist: 'name_1|name_2|SampleProduct',
+ skulist: 'custom sku 0|custom sku 1|custom sku 2',
+ qlist: '1|5|1',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ date: '20240129_1300',
+ altord: 'SampleAlternateOrderId',
+ cur: 'INR',
+ cc: 'Visa',
+ commreason: 'SampleCommReason',
+ iscomm: 'Y',
+ consumed: '20240129_1400',
+ coupon: 'SampleCoupon',
+ custid: 'SampleCustomerId',
+ custscore: 'A',
+ custstatus: 'New',
+ did: 'SampleDeviceId',
+ disamt: '50.00',
+ ordstatus: 'Pending',
+ segment: 'SampleSegment',
+ shipcountry: 'USA',
+ shipped: '20240129_1500',
+ sitename: 'SampleSiteName',
+ storeid: '12345',
+ storecat: 'Electronics',
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-track-success-3',
+ name: 'rakuten',
+ description:
+ 'Track call for products return or cancelled products containing amount,price and quantity where price is negative',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should contain only properties and product payload and amount to be calculated from price*quantity where amount is negative and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ ...commonProperties,
+ products: [
+ {
+ sku: 'custom sku 0',
+ quantity: 1,
+ amount: '-125',
+ name: 'name_1',
+ },
+ {
+ sku: 'custom sku 1',
+ quantity: 5,
+ price: -25,
+ name: 'name_2',
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ output: transformResultBuilder({
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'dummyMarketingId',
+ xml: 1,
+ source: 'rudderstack',
+ amtlist: '-12500|-12500',
+ skulist: 'custom sku 0|custom sku 1',
+ qlist: '1|5',
+ ord: 'SampleOrderId',
+ namelist: 'name_1|name_2',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ date: '20240129_1300',
+ altord: 'SampleAlternateOrderId',
+ cur: 'INR',
+ cc: 'Visa',
+ commreason: 'SampleCommReason',
+ iscomm: 'Y',
+ consumed: '20240129_1400',
+ coupon: 'SampleCoupon',
+ custid: 'SampleCustomerId',
+ custscore: 'A',
+ custstatus: 'New',
+ did: 'SampleDeviceId',
+ disamt: '50.00',
+ ordstatus: 'Pending',
+ segment: 'SampleSegment',
+ shipcountry: 'USA',
+ shipped: '20240129_1500',
+ sitename: 'SampleSiteName',
+ storeid: '12345',
+ storecat: 'Electronics',
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-track-success-4',
+ name: 'rakuten',
+ description: 'Track call for Discount event ',
+ scenario: 'Business',
+ successCriteria:
+ 'Response should have last item of skulist as "Discount", qlist as 0 and amtlist as negative and status code should be 200',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ orderId: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ landTime: '20240129_1200',
+ products: [
+ {
+ sku: 'custom sku 0',
+ quantity: 5,
+ amount: '125',
+ name: 'name_1',
+ },
+ {
+ sku: 'custom sku 1',
+ quantity: 5,
+ price: 25,
+ name: 'name_2',
+ },
+ {
+ sku: 'Discount',
+ quantity: 0,
+ amount: -500,
+ name: 'Discount',
+ },
+ ],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ output: transformResultBuilder({
+ method: 'GET',
+ endpoint,
+ headers: commonOutputHeaders,
+ params: {
+ mid: 'dummyMarketingId',
+ xml: 1,
+ source: 'rudderstack',
+ namelist: 'name_1|name_2|Discount',
+ amtlist: '12500|12500|-50000',
+ skulist: 'custom sku 0|custom sku 1|Discount',
+ qlist: '5|5|0',
+ ord: 'SampleOrderId',
+ tr: 'SampleRanSiteID',
+ land: '20240129_1200',
+ },
+ userId: '',
+ }),
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/rakuten/processor/transformationFailure.ts b/test/integrations/destinations/rakuten/processor/transformationFailure.ts
new file mode 100644
index 00000000000..e35ab26b691
--- /dev/null
+++ b/test/integrations/destinations/rakuten/processor/transformationFailure.ts
@@ -0,0 +1,335 @@
+import { destination } from './commonConfig';
+
+export const transformationFailures = [
+ {
+ id: 'rakuten-test-2',
+ name: 'rakuten',
+ description: 'Required field orderId not present',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for orderId not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ products: [{}],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from ["properties.order_id","properties.orderId"]: Workflow: procWorkflow, Step: prepareTrackPayload, ChildStep: undefined, OriginalError: Missing required value from ["properties.order_id","properties.orderId"]',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: {
+ destType: 'RAKUTEN',
+ destinationId: 'dummyDestId',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-3',
+ name: 'rakuten',
+ description: 'No products available in products array to send',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for no products present to send',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ land: '20230406_2342',
+ tr: 'txnId',
+ orderId: 'ord 123',
+ products: [],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Either properties.product is not an array or is empty: Workflow: procWorkflow, Step: prepareTrackPayload, ChildStep: undefined, OriginalError: Either properties.product is not an array or is empty',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: {
+ destType: 'RAKUTEN',
+ destinationId: 'dummyDestId',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-4',
+ name: 'rakuten',
+ description: 'Unsupported message type -> Identify',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for Unsupported message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ traits: {
+ orderId: 'ord 123',
+ products: [],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'message type identify is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type identify is not supported',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: {
+ destType: 'RAKUTEN',
+ errorCategory: 'dataValidation',
+ destinationId: 'dummyDestId',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-5',
+ name: 'rakuten',
+ description: 'No eligible property available for required field tr present',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for required field tr not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ orderId: 'ord 123',
+ products: [],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from ["properties.tr","properties.ran_site_id","properties.ranSiteID"]: Workflow: procWorkflow, Step: prepareTrackPayload, ChildStep: undefined, OriginalError: Missing required value from ["properties.tr","properties.ran_site_id","properties.ranSiteID"]',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: {
+ destType: 'RAKUTEN',
+ destinationId: 'dummyDestId',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ id: 'rakuten-test-6',
+ name: 'rakuten',
+ description: 'No eligible property available for required field land present',
+ scenario: 'Framework',
+ successCriteria: 'Transformationn Error for required field land not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination,
+ message: {
+ type: 'track',
+ event: 'product purchased',
+ sentAt: '2021-01-25T16:12:02.048Z',
+ userId: 'sajal12',
+ channel: 'mobile',
+ rudderId: 'b7b24f86-f7bf-46d8-b2b4-ccafc080239c',
+ messageId: '1611588776408-ee5a3212-fbf9-4cbb-bbad-3ed0f7c6a2ce',
+ properties: {
+ tr: 'txnId',
+ orderId: 'ord 123',
+ products: [],
+ },
+ anonymousId: '9c6bd77ea9da3e68',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2021-01-25T15:32:56.409Z',
+ },
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Missing required value from ["properties.land","properties.land_time","properties.landTime"]: Workflow: procWorkflow, Step: prepareTrackPayload, ChildStep: undefined, OriginalError: Missing required value from ["properties.land","properties.land_time","properties.landTime"]',
+ metadata: {
+ destinationId: 'dummyDestId',
+ jobId: '1',
+ },
+ statTags: {
+ destType: 'RAKUTEN',
+ destinationId: 'dummyDestId',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'cdkV2',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/reddit/dataDelivery/business.ts b/test/integrations/destinations/reddit/dataDelivery/business.ts
new file mode 100644
index 00000000000..2c4714ef13a
--- /dev/null
+++ b/test/integrations/destinations/reddit/dataDelivery/business.ts
@@ -0,0 +1,131 @@
+import {
+ generateMetadata,
+ generateProxyV0Payload,
+ generateProxyV1Payload,
+} from '../../../testUtils';
+
+const validRequestPayload = {
+ events: [
+ {
+ event_at: '2019-10-14T09:03:17.562Z',
+ event_type: {
+ tracking_type: 'Purchase',
+ },
+ user: {
+ aaid: 'c12d34889302d3c656b5699fa9190b51c50d6f62fce57e13bd56b503d66c487a',
+ email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
+ external_id: '7b023241a3132b792a5a33915a5afb3133cbb1e13d72879689bf6504de3b036d',
+ ip_address: 'e80bd55a3834b7c2a34ade23c7ecb54d2a49838227080f50716151e765a619db',
+ user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ screen_dimensions: {},
+ },
+ event_metadata: {
+ item_count: 3,
+ products: [
+ {
+ id: '123',
+ name: 'Monopoly',
+ category: 'Games',
+ },
+ {
+ id: '345',
+ name: 'UNO',
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ ],
+};
+
+const commonHeaders = {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: validRequestPayload,
+};
+
+export const testScenariosForV0API = [
+ {
+ id: 'reddit_v0_scenario_1',
+ name: 'reddit',
+ description:
+ '[Proxy v0 API] :: Test for a valid request with a successful 200 response from the destination',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_fsddXXXfsfd',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ destResp: {
+ response: {
+ message: 'Successfully processed 1 conversion events.',
+ },
+ status: 200,
+ },
+ message: 'Request Processed Successfully',
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+];
+
+export const testScenariosForV1API = [
+ {
+ id: 'reddit_v1_scenario_1',
+ name: 'reddit',
+ description:
+ '[Proxy v1 API] :: Test for a valid request with a successful 200 response from the destination',
+ scenario: 'Business',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ ...commonRequestParameters,
+ endpoint: 'https://dfareporting.googleapis.com/test_url_for_valid_request',
+ },
+ [generateMetadata(1)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ metadata: generateMetadata(1),
+ statusCode: 500,
+ },
+ ],
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/reddit/dataDelivery/data.ts b/test/integrations/destinations/reddit/dataDelivery/data.ts
new file mode 100644
index 00000000000..54728ecb90e
--- /dev/null
+++ b/test/integrations/destinations/reddit/dataDelivery/data.ts
@@ -0,0 +1,9 @@
+import { testScenariosForV0API, testScenariosForV1API } from './business';
+import { v0oauthScenarios, v1oauthScenarios } from './oauth';
+
+export const data = [
+ ...v0oauthScenarios,
+ ...v1oauthScenarios,
+ ...testScenariosForV0API,
+ ...testScenariosForV1API,
+];
diff --git a/test/integrations/destinations/reddit/dataDelivery/oauth.ts b/test/integrations/destinations/reddit/dataDelivery/oauth.ts
new file mode 100644
index 00000000000..90368cd60b0
--- /dev/null
+++ b/test/integrations/destinations/reddit/dataDelivery/oauth.ts
@@ -0,0 +1,147 @@
+import {
+ generateMetadata,
+ generateProxyV1Payload,
+ generateProxyV0Payload,
+} from '../../../testUtils';
+
+const authorizationRequiredRequestPayload = {
+ events: [
+ {
+ event_at: '2019-10-14T09:03:17.562Z',
+ event_type: {
+ tracking_type: 'ViewContent',
+ },
+ user: {
+ aaid: 'c12d34889302d3c656b5699fa9190b51c50d6f62fce57e13bd56b503d66c487a',
+ email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
+ external_id: '7b023241a3132b792a5a33915a5afb3133cbb1e13d72879689bf6504de3b036d',
+ ip_address: 'e80bd55a3834b7c2a34ade23c7ecb54d2a49838227080f50716151e765a619db',
+ user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ screen_dimensions: {},
+ },
+ event_metadata: {
+ item_count: 3,
+ products: [
+ {
+ id: '123',
+ name: 'Monopoly',
+ category: 'Games',
+ },
+ {
+ id: '345',
+ name: 'UNO',
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ ],
+};
+
+const commonHeaders = {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: authorizationRequiredRequestPayload,
+};
+
+const expectedStatTags = {
+ destType: 'REDDIT',
+ destinationId: 'default-destinationId',
+ errorCategory: 'network',
+ errorType: 'retryable',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'default-workspaceId',
+};
+
+export const v0oauthScenarios = [
+ {
+ id: 'reddit_v0_oauth_scenario_1',
+ name: 'reddit',
+ description: '[Proxy v0 API] :: Oauth where Authorization Required response from destination',
+ successCriteria: 'Should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_gsddXXXfsfd',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ authErrorCategory: 'REFRESH_TOKEN',
+ destinationResponse: {
+ response: 'Authorization Required',
+ status: 401,
+ },
+ message:
+ "Request failed due to Authorization Required 'during reddit response transformation'",
+ statTags: expectedStatTags,
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
+
+export const v1oauthScenarios = [
+ {
+ id: 'reddit_v1_oauth_scenario_1',
+ name: 'reddit',
+ description: '[Proxy v1 API] :: Oauth where Authorization Required response from destination',
+ successCriteria: 'Should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ ...commonRequestParameters,
+ endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_gsddXXXfsfd',
+ },
+ [generateMetadata(1)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ authErrorCategory: 'REFRESH_TOKEN',
+ message:
+ "Request failed due to Authorization Required 'during reddit response transformation'",
+ response: [
+ {
+ error: '"Authorization Required"',
+ metadata: generateMetadata(1),
+ statusCode: 500,
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/reddit/delivery/data.ts b/test/integrations/destinations/reddit/delivery/data.ts
deleted file mode 100644
index 66c1e2863f3..00000000000
--- a/test/integrations/destinations/reddit/delivery/data.ts
+++ /dev/null
@@ -1,174 +0,0 @@
-export const data = [
- {
- name: 'reddit',
- description: 'Test 0',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_fsddXXXfsfd',
- headers: {
- Authorization: 'Bearer dummyAccessToken',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- events: [
- {
- event_at: '2019-10-14T09:03:17.562Z',
- event_type: {
- tracking_type: 'Purchase',
- },
- user: {
- aaid: 'c12d34889302d3c656b5699fa9190b51c50d6f62fce57e13bd56b503d66c487a',
- email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
- external_id: '7b023241a3132b792a5a33915a5afb3133cbb1e13d72879689bf6504de3b036d',
- ip_address: 'e80bd55a3834b7c2a34ade23c7ecb54d2a49838227080f50716151e765a619db',
- user_agent:
- 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
- screen_dimensions: {},
- },
- event_metadata: {
- item_count: 3,
- products: [
- {
- id: '123',
- name: 'Monopoly',
- category: 'Games',
- },
- {
- id: '345',
- name: 'UNO',
- category: 'Games',
- },
- ],
- },
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- userId: '',
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 200,
- body: {
- output: {
- destResp: {
- response: {
- message: 'Successfully processed 1 conversion events.',
- },
- status: 200,
- },
- message: 'Request Processed Successfully',
- status: 200,
- },
- },
- },
- },
- },
- {
- name: 'reddit',
- description: 'Test 1',
- feature: 'dataDelivery',
- module: 'destination',
- version: 'v0',
- input: {
- request: {
- body: {
- version: '1',
- type: 'REST',
- method: 'POST',
- endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_gsddXXXfsfd',
- headers: {
- Authorization: 'Bearer dummyAccessToken',
- 'Content-Type': 'application/json',
- },
- params: {},
- body: {
- JSON: {
- events: [
- {
- event_at: '2019-10-14T09:03:17.562Z',
- event_type: {
- tracking_type: 'ViewContent',
- },
- user: {
- aaid: 'c12d34889302d3c656b5699fa9190b51c50d6f62fce57e13bd56b503d66c487a',
- email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
- external_id: '7b023241a3132b792a5a33915a5afb3133cbb1e13d72879689bf6504de3b036d',
- ip_address: 'e80bd55a3834b7c2a34ade23c7ecb54d2a49838227080f50716151e765a619db',
- user_agent:
- 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
- screen_dimensions: {},
- },
- event_metadata: {
- item_count: 3,
- products: [
- {
- id: '123',
- name: 'Monopoly',
- category: 'Games',
- },
- {
- id: '345',
- name: 'UNO',
- category: 'Games',
- },
- ],
- },
- },
- ],
- },
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
- files: {},
- userId: '',
- },
- method: 'POST',
- },
- },
- output: {
- response: {
- status: 500,
- body: {
- output: {
- authErrorCategory: 'REFRESH_TOKEN',
- destinationResponse: {
- response: 'Authorization Required',
- status: 401,
- },
- message:
- "Request failed due to Authorization Required 'during reddit response transformation'",
- statTags: {
- destType: 'REDDIT',
- destinationId: 'Non-determininable',
- errorCategory: 'network',
- errorType: 'retryable',
- feature: 'dataDelivery',
- implementation: 'native',
- module: 'destination',
- workspaceId: 'Non-determininable',
- },
- status: 500,
- },
- },
- },
- },
- },
-];
diff --git a/test/integrations/destinations/reddit/processor/data.ts b/test/integrations/destinations/reddit/processor/data.ts
index 91da5fbe67e..49e0cd2baae 100644
--- a/test/integrations/destinations/reddit/processor/data.ts
+++ b/test/integrations/destinations/reddit/processor/data.ts
@@ -126,7 +126,177 @@ export const data = [
screen_dimensions: {},
},
event_metadata: {
- item_count: 3,
+ item_count: 2,
+ currency: 'USD',
+ value: 1500,
+ value_decimal: 15,
+ products: [
+ {
+ id: '123',
+ name: 'Monopoly',
+ category: 'Games',
+ },
+ {
+ id: '345',
+ name: 'UNO',
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ secret: {
+ accessToken: 'dummyAccessToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'reddit',
+ description: 'Track call with order completed event with floating point values for revenue',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ traits: {
+ email: 'testone@gmail.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ ip: '54.100.200.255',
+ device: {
+ advertisingId: 'asfds7fdsihf734b34j43f',
+ },
+ os: {
+ name: 'android',
+ },
+ },
+ type: 'track',
+ session_id: '16733896350494',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ event: 'Order Completed',
+ userId: 'testuserId1',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 14.985,
+ shipping: 4,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ products: [
+ {
+ product_id: '123',
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: '345',
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ quantity: 2,
+ category: 'Games',
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accountId: 'a2_fsddXXXfsfd',
+ hashData: true,
+ eventsMapping: [
+ {
+ from: 'Order Completed',
+ to: 'Purchase',
+ },
+ ],
+ },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
+ },
+ metadata: {
+ destinationId: 'destId',
+ workspaceId: 'wspId',
+ secret: {
+ accessToken: 'dummyAccessToken',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://ads-api.reddit.com/api/v2.0/conversions/events/a2_fsddXXXfsfd',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ events: [
+ {
+ event_at: '2019-10-14T09:03:17.562Z',
+ event_type: {
+ tracking_type: 'Purchase',
+ },
+ user: {
+ aaid: 'c12d34889302d3c656b5699fa9190b51c50d6f62fce57e13bd56b503d66c487a',
+ email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
+ external_id:
+ '7b023241a3132b792a5a33915a5afb3133cbb1e13d72879689bf6504de3b036d',
+ ip_address:
+ 'e80bd55a3834b7c2a34ade23c7ecb54d2a49838227080f50716151e765a619db',
+ user_agent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ screen_dimensions: {},
+ },
+ event_metadata: {
+ item_count: 2,
+ currency: 'USD',
+ value: 1499,
+ value_decimal: 14.99,
products: [
{
id: '123',
diff --git a/test/integrations/destinations/reddit/router/data.ts b/test/integrations/destinations/reddit/router/data.ts
index 317bb41a149..723afff3746 100644
--- a/test/integrations/destinations/reddit/router/data.ts
+++ b/test/integrations/destinations/reddit/router/data.ts
@@ -12,9 +12,7 @@ export const data = [
{
message: {
context: {
- traits: {
- email: 'testone@gmail.com',
- },
+ traits: { email: 'testone@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
ip: '54.100.200.255',
@@ -57,38 +55,29 @@ export const data = [
},
],
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
destination: {
Config: {
accountId: 'a2_fsddXXXfsfd',
hashData: true,
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
metadata: {
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 1,
+ userId: 'u1',
},
},
{
message: {
context: {
- traits: {
- email: 'testone@gmail.com',
- },
+ traits: { email: 'testone@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
ip: '54.100.200.255',
@@ -122,38 +111,29 @@ export const data = [
},
],
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
destination: {
Config: {
accountId: 'a2_fsddXXXfsfd',
hashData: true,
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
metadata: {
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 2,
+ userId: 'u1',
},
},
{
message: {
context: {
- traits: {
- email: 'testone@gmail.com',
- },
+ traits: { email: 'testone@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
ip: '54.100.200.255',
@@ -177,30 +157,23 @@ export const data = [
url: 'https://www.website.com/product/path',
image_url: 'https://www.website.com/product/path.webp',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
destination: {
Config: {
accountId: 'a2_fsddXXXfsfd',
hashData: true,
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
metadata: {
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 3,
+ userId: 'u1',
},
},
],
@@ -220,9 +193,7 @@ export const data = [
events: [
{
event_at: '2019-10-14T09:03:17.562Z',
- event_type: {
- tracking_type: 'Purchase',
- },
+ event_type: { tracking_type: 'Purchase' },
user: {
email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
external_id:
@@ -234,26 +205,19 @@ export const data = [
screen_dimensions: {},
},
event_metadata: {
- item_count: 3,
+ item_count: 2,
+ currency: 'USD',
+ value: 1500,
+ value_decimal: 15,
products: [
- {
- id: '123',
- name: 'Monopoly',
- category: 'Games',
- },
- {
- id: '345',
- name: 'UNO',
- category: 'Games',
- },
+ { id: '123', name: 'Monopoly', category: 'Games' },
+ { id: '345', name: 'UNO', category: 'Games' },
],
},
},
{
event_at: '2019-10-14T09:03:17.562Z',
- event_type: {
- tracking_type: 'ViewContent',
- },
+ event_type: { tracking_type: 'ViewContent' },
user: {
email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
external_id:
@@ -282,9 +246,7 @@ export const data = [
},
{
event_at: '2019-10-14T09:03:17.562Z',
- event_type: {
- tracking_type: 'AddToCart',
- },
+ event_type: { tracking_type: 'AddToCart' },
user: {
email: 'ac144532d9e4efeab19475d9253a879173ea12a3d2238d1cb8a332a7b3a105f2',
external_id:
@@ -327,23 +289,23 @@ export const data = [
{
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 1,
+ userId: 'u1',
},
{
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 2,
+ userId: 'u1',
},
{
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 3,
+ userId: 'u1',
},
],
batched: true,
@@ -352,18 +314,9 @@ export const data = [
Config: {
accountId: 'a2_fsddXXXfsfd',
hashData: true,
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
- },
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
},
],
@@ -384,9 +337,7 @@ export const data = [
{
message: {
context: {
- traits: {
- email: 'testone@gmail.com',
- },
+ traits: { email: 'testone@gmail.com' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
ip: '54.100.200.255',
@@ -419,29 +370,22 @@ export const data = [
},
],
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
sentAt: '2019-10-14T09:03:22.563Z',
},
destination: {
Config: {
accountId: 'a2_fsddXXXfsfd',
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
metadata: {
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 1,
+ userId: 'u1',
},
},
],
@@ -459,26 +403,17 @@ export const data = [
{
destinationId: 'destId',
workspaceId: 'wspId',
- secret: {
- accessToken: 'dummyAccessToken',
- },
+ secret: { accessToken: 'dummyAccessToken' },
+ jobId: 1,
+ userId: 'u1',
},
],
destination: {
Config: {
accountId: 'a2_fsddXXXfsfd',
- eventsMapping: [
- {
- from: 'Order Completed',
- to: 'Purchase',
- },
- ],
- },
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
+ eventsMapping: [{ from: 'Order Completed', to: 'Purchase' }],
},
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
batched: false,
statusCode: 400,
diff --git a/test/integrations/destinations/refiner/router/data.ts b/test/integrations/destinations/refiner/router/data.ts
index bea4d3ddcc2..0ff75120d6d 100644
--- a/test/integrations/destinations/refiner/router/data.ts
+++ b/test/integrations/destinations/refiner/router/data.ts
@@ -21,10 +21,7 @@ export const data = [
city: 'Banglore',
email: 'test@user.com',
phone: '7267286346802347827',
- address: {
- city: 'ahmedabad',
- state: 'india',
- },
+ address: { city: 'ahmedabad', state: 'india' },
lastName: 'user',
username: 'testUser',
firstName: 'test',
@@ -38,9 +35,7 @@ export const data = [
request_ip: '[::1]',
originalTimestamp: '2022-10-11T13:10:54.877+05:30',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
apiKey: 'dummyApiKey',
@@ -75,10 +70,7 @@ export const data = [
firstName: 'test',
lastName: 'user',
phone: '7267286346802347827',
- userAddress: {
- city: 'ahmedabad',
- state: 'india',
- },
+ userAddress: { city: 'ahmedabad', state: 'india' },
userCountry: 'india',
userId: 'user@45',
username: 'testUser',
@@ -109,7 +101,7 @@ export const data = [
whitelistedEvents: [{ eventName: '' }],
},
},
- metadata: [{ jobId: 1 }],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
],
@@ -161,10 +153,7 @@ export const data = [
firstName: 'test',
userCountry: 'india',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.2' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36',
},
@@ -176,30 +165,16 @@ export const data = [
currency: 'IND',
order_id: '5241735',
products: [
- {
- id: 'product-bacon-jam',
- category: 'Merch',
- brand: '',
- },
- {
- id: 'product-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
- {
- id: 'offer-t-shirt',
- category: 'Merch',
- brand: 'Levis',
- },
+ { id: 'product-bacon-jam', category: 'Merch', brand: '' },
+ { id: 'product-t-shirt', category: 'Merch', brand: 'Levis' },
+ { id: 'offer-t-shirt', category: 'Merch', brand: 'Levis' },
],
},
receivedAt: '2022-10-11T13:38:29.178+05:30',
request_ip: '[::1]',
originalTimestamp: '2022-10-11T13:38:31.827+05:30',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
apiKey: 'dummyApiKey',
@@ -227,11 +202,7 @@ export const data = [
batched: false,
batchedRequest: {
body: {
- FORM: {
- email: 'test@user.com',
- event: 'Product Searched',
- id: 'user@45',
- },
+ FORM: { email: 'test@user.com', event: 'Product Searched', id: 'user@45' },
JSON: {},
JSON_ARRAY: {},
XML: {},
@@ -258,7 +229,7 @@ export const data = [
whitelistedEvents: [{ eventName: '' }],
},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
],
@@ -280,10 +251,7 @@ export const data = [
message: {
type: 'group',
sentAt: '2015-02-23T22:28:55.111Z',
- traits: {
- name: 'rudder ventures',
- email: 'business@rudderstack.com',
- },
+ traits: { name: 'rudder ventures', email: 'business@rudderstack.com' },
userId: 'test@12',
channel: 'browser',
context: {
@@ -297,9 +265,7 @@ export const data = [
integrations: { All: true },
originalTimestamp: '2022-10-11T13:51:00.906+05:30',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
accountAttributesMapping: [{ from: 'email', to: 'businessEmail' }],
@@ -361,7 +327,7 @@ export const data = [
whitelistedEvents: [{ eventName: '' }],
},
},
- metadata: [{ jobId: 3 }],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
],
diff --git a/test/integrations/destinations/revenue_cat/processor/data.ts b/test/integrations/destinations/revenue_cat/processor/data.ts
index 45ff5d8499b..84b7c5975f8 100644
--- a/test/integrations/destinations/revenue_cat/processor/data.ts
+++ b/test/integrations/destinations/revenue_cat/processor/data.ts
@@ -1,1079 +1,1083 @@
export const data = [
- {
- "name": "revenue_cat",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "as9d920a5e75a18acb4a29abd9ec1e2e",
- "xPlatform": "stripe"
- }
- },
- "message": {
- "userId": "rudder1235678",
- "channel": "web",
- "context": {
- "ip": "14.5.67.21",
- "app": {
- "build": "1",
- "name": "RudderAndroidClient",
- "namespace": "com.rudderstack.demo.android",
- "version": "1.0"
- },
- "device": {
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "0.1.4"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Mumbai",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)"
- },
- "type": "identify",
- "traits": {
- "email": "chandan@companyname.com",
- "phone": "92374162212",
- "lastname": "Doe",
- "density": "420",
- "height": "1794",
- "width": "1080",
- "iterableCampaignId": "1234",
- "iterableTemplateId": "1234"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "GET",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678",
- "headers": {
- "Authorization": "Basic as9d920a5e75a18acb4a29abd9ec1e2e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes",
- "headers": {
- "Authorization": "Basic as9d920a5e75a18acb4a29abd9ec1e2e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributes": {
- "app_user_id": {
- "value": "rudder1235678"
- },
- "$email": {
- "value": "chandan@companyname.com"
- },
- "$phoneNumber": {
- "value": "92374162212"
- },
- "$ip": {
- "value": "14.5.67.21"
- },
- "$iterableCampaignId": {
- "value": "1234"
- },
- "$iterableTemplateId": {
- "value": "1234"
- },
- "$displayName": {
- "value": "Doe"
- },
- "lastname": {
- "value": "Doe"
- },
- "density": {
- "value": "420"
- },
- "height": {
- "value": "1794"
- },
- "width": {
- "value": "1080"
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "a5e75dfda29abd920ec1ec8a18acb42e",
- "xPlatform": "stripe"
- }
- },
- "message": {
- "userId": "rudder1235678",
- "channel": "web",
- "context": {
- "ip": "14.5.67.21",
- "app": {
- "build": "1",
- "name": "RudderAndroidClient",
- "namespace": "com.rudderstack.demo.android",
- "version": "1.0"
- },
- "device": {
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "0.1.4"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Mumbai",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)"
- },
- "type": "identify",
- "traits": {
- "email": "chandan@companyname.com",
- "phone": "92374162212",
- "firstname": "James",
- "density": 420,
- "height": 1794,
- "width": 1080,
- "iterableCampaignId": "1234",
- "iterableTemplateId": "1234"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "GET",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678",
- "headers": {
- "Authorization": "Basic a5e75dfda29abd920ec1ec8a18acb42e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes",
- "headers": {
- "Authorization": "Basic a5e75dfda29abd920ec1ec8a18acb42e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributes": {
- "app_user_id": {
- "value": "rudder1235678"
- },
- "$email": {
- "value": "chandan@companyname.com"
- },
- "$phoneNumber": {
- "value": "92374162212"
- },
- "$ip": {
- "value": "14.5.67.21"
- },
- "$iterableCampaignId": {
- "value": "1234"
- },
- "$iterableTemplateId": {
- "value": "1234"
- },
- "$displayName": {
- "value": "James"
- },
- "firstname": {
- "value": "James"
- },
- "density": {
- "value": "420"
- },
- "height": {
- "value": "1794"
- },
- "width": {
- "value": "1080"
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "xPlatform": "stripe"
- }
- },
- "message": {
- "userId": "rudder1235678",
- "channel": "web",
- "context": {
- "ip": "14.5.67.21",
- "app": {
- "build": "1",
- "name": "RudderAndroidClient",
- "namespace": "com.rudderstack.demo.android",
- "version": "1.0"
- },
- "device": {
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "0.1.4"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Mumbai",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)"
- },
- "type": "identify",
- "traits": {
- "email": "chandan@companyname.com",
- "phone": "92374162212",
- "name": "John Doe"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Public API Key required for Authentication",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "REVENUE_CAT",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "a5e75d99c8a18acb4a29abd920ec1e2e"
- }
- },
- "message": {
- "userId": "rudder1235678",
- "channel": "web",
- "context": {
- "ip": "14.5.67.21",
- "app": {
- "build": "1",
- "name": "RudderAndroidClient",
- "namespace": "com.rudderstack.demo.android",
- "version": "1.0"
- },
- "device": {
- "manufacturer": "Google",
- "model": "Android SDK built for x86",
- "name": "generic_x86",
- "type": "android"
- },
- "library": {
- "name": "com.rudderstack.android.sdk.core",
- "version": "0.1.4"
- },
- "locale": "en-US",
- "network": {
- "carrier": "Android",
- "bluetooth": false,
- "cellular": true,
- "wifi": true
- },
- "campaign": {
- "source": "google",
- "medium": "medium",
- "term": "keyword",
- "content": "some content"
- },
- "os": {
- "name": "Android",
- "version": "9"
- },
- "screen": {
- "density": 420,
- "height": 1794,
- "width": 1080
- },
- "timezone": "Asia/Mumbai",
- "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)"
- },
- "type": "identify",
- "traits": {
- "email": "chandan@companyname.com",
- "phone": "92374162212",
- "name": "John Doe"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "GET",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678",
- "headers": {
- "Authorization": "Basic a5e75d99c8a18acb4a29abd920ec1e2e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes",
- "headers": {
- "Authorization": "Basic a5e75d99c8a18acb4a29abd920ec1e2e",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "attributes": {
- "app_user_id": {
- "value": "rudder1235678"
- },
- "$displayName": {
- "value": "John Doe"
- },
- "$email": {
- "value": "chandan@companyname.com"
- },
- "$phoneNumber": {
- "value": "92374162212"
- },
- "$ip": {
- "value": "14.5.67.21"
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey"
- }
- },
- "message": {
- "type": "track",
- "userId": "rudder123",
- "properties": {
- "checkout_id": "12345",
- "order_id": "1234",
- "affiliation": "Apple Store",
- "total": 20,
- "revenue": 15,
- "shipping": 22,
- "tax": 1,
- "discount": 1.5,
- "coupon": "ImagePro",
- "currency": "USD",
- "fetch_token": "dummyFetchToken",
- "product_id": "123",
- "products": [
- {
- "sku": "G-32",
- "name": "Monopoly",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- {
- "product_id": "345",
- "sku": "F-32",
- "name": "UNO",
- "price": 3.45,
- "quantity": 2,
- "category": "Games",
- "introductory_price": "250",
- "is_restore": false,
- "presented_offering_identifier": "123erd"
- }
- ]
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "X-Platform is required field",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "REVENUE_CAT",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "xPlatform": "stripe"
- }
- },
- "message": {
- "type": "track",
- "userId": "rudder123",
- "properties": {
- "checkout_id": "12345",
- "order_id": "1234",
- "affiliation": "Apple Store",
- "total": 20,
- "revenue": 15,
- "shipping": 22,
- "tax": 1,
- "discount": 1.5,
- "coupon": "ImagePro",
- "currency": "USD",
- "fetch_token": "dummyFetchToken",
- "product_id": "123",
- "products": [
- {
- "sku": "G-32",
- "name": "Monopoly",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- {
- "product_id": "345",
- "sku": "F-32",
- "name": "UNO",
- "price": 3.45,
- "quantity": 2,
- "category": "Games",
- "introductory_price": "250",
- "is_restore": false,
- "presented_offering_identifier": "123erd"
- }
- ]
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "123",
- "currency": "USD",
- "price": 14,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "345",
- "currency": "USD",
- "price": 3.45,
- "introductory_price": "250",
- "is_restore": false,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "xPlatform": "stripe"
- }
- },
- "message": {
- "type": "track",
- "userId": "rudder123",
- "properties": {
- "checkout_id": "12345",
- "order_id": "1234",
- "affiliation": "Apple Store",
- "total": 20,
- "revenue": 15,
- "shipping": 22,
- "tax": 1,
- "discount": 1.5,
- "coupon": "ImagePro",
- "currency": "USD",
- "fetch_token": "dummyFetchToken",
- "product_id": "123-sa",
- "products": [
- {
- "sku": "G-32",
- "name": "Monopoly",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- {
- "product_id": "345",
- "sku": "F-32",
- "name": "UNO",
- "price": 3.45,
- "quantity": 2,
- "category": "Games",
- "introductory_price": "250",
- "is_restore": false,
- "presented_offering_identifier": "123erd"
- },
- {
- "sku": "G-33",
- "name": "SunGlass",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- {
- "sku": "G-35",
- "product_id": "1234sb",
- "name": "Real-me",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- }
- ]
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "123-sa",
- "currency": "USD",
- "price": 14,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "345",
- "currency": "USD",
- "price": 3.45,
- "introductory_price": "250",
- "is_restore": false,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "123-sa",
- "currency": "USD",
- "price": 14,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "1234sb",
- "currency": "USD",
- "price": 14,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "revenue_cat",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "apiKey": "dummyApiKey",
- "xPlatform": "stripe"
- }
- },
- "message": {
- "type": "track",
- "userId": "rudder123",
- "properties": {
- "checkout_id": "12345",
- "order_id": "1234",
- "affiliation": "Apple Store",
- "total": 20,
- "revenue": 15,
- "shipping": 22,
- "tax": 1,
- "discount": 1.5,
- "coupon": "ImagePro",
- "currency": "USD",
- "fetch_token": "dummyFetchToken",
- "product_id": "123-sa",
- "sku": "G-32",
- "name": "Monopoly",
- "price": 14,
- "quantity": 1,
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.revenuecat.com/v1/receipts",
- "headers": {
- "Authorization": "Basic dummyApiKey",
- "Content-Type": "application/json",
- "X-Platform": "stripe"
- },
- "params": {},
- "body": {
- "JSON": {
- "app_user_id": "rudder123",
- "fetch_token": "dummyFetchToken",
- "product_id": "123-sa",
- "price": 14,
- "currency": "USD",
- "introductory_price": "350",
- "is_restore": true,
- "presented_offering_identifier": "123erd"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'revenue_cat',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'as9d920a5e75a18acb4a29abd9ec1e2e',
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ userId: 'rudder1235678',
+ channel: 'web',
+ context: {
+ ip: '14.5.67.21',
+ app: {
+ build: '1',
+ name: 'RudderAndroidClient',
+ namespace: 'com.rudderstack.demo.android',
+ version: '1.0',
+ },
+ device: {
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '0.1.4',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Mumbai',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
+ },
+ type: 'identify',
+ traits: {
+ email: 'chandan@companyname.com',
+ phone: '92374162212',
+ lastname: 'Doe',
+ density: '420',
+ height: '1794',
+ width: '1080',
+ iterableCampaignId: '1234',
+ iterableTemplateId: '1234',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678',
+ headers: {
+ Authorization: 'Basic as9d920a5e75a18acb4a29abd9ec1e2e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes',
+ headers: {
+ Authorization: 'Basic as9d920a5e75a18acb4a29abd9ec1e2e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: {
+ app_user_id: {
+ value: 'rudder1235678',
+ },
+ $email: {
+ value: 'chandan@companyname.com',
+ },
+ $phoneNumber: {
+ value: '92374162212',
+ },
+ $ip: {
+ value: '14.5.67.21',
+ },
+ $iterableCampaignId: {
+ value: '1234',
+ },
+ $iterableTemplateId: {
+ value: '1234',
+ },
+ $displayName: {
+ value: 'Doe',
+ },
+ lastname: {
+ value: 'Doe',
+ },
+ density: {
+ value: '420',
+ },
+ height: {
+ value: '1794',
+ },
+ width: {
+ value: '1080',
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'a5e75dfda29abd920ec1ec8a18acb42e',
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ userId: 'rudder1235678',
+ channel: 'web',
+ context: {
+ ip: '14.5.67.21',
+ app: {
+ build: '1',
+ name: 'RudderAndroidClient',
+ namespace: 'com.rudderstack.demo.android',
+ version: '1.0',
+ },
+ device: {
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '0.1.4',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Mumbai',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
+ },
+ type: 'identify',
+ traits: {
+ email: 'chandan@companyname.com',
+ phone: '92374162212',
+ firstname: 'James',
+ density: 420,
+ height: 1794,
+ width: 1080,
+ iterableCampaignId: '1234',
+ iterableTemplateId: '1234',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678',
+ headers: {
+ Authorization: 'Basic a5e75dfda29abd920ec1ec8a18acb42e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes',
+ headers: {
+ Authorization: 'Basic a5e75dfda29abd920ec1ec8a18acb42e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: {
+ app_user_id: {
+ value: 'rudder1235678',
+ },
+ $email: {
+ value: 'chandan@companyname.com',
+ },
+ $phoneNumber: {
+ value: '92374162212',
+ },
+ $ip: {
+ value: '14.5.67.21',
+ },
+ $iterableCampaignId: {
+ value: '1234',
+ },
+ $iterableTemplateId: {
+ value: '1234',
+ },
+ $displayName: {
+ value: 'James',
+ },
+ firstname: {
+ value: 'James',
+ },
+ density: {
+ value: '420',
+ },
+ height: {
+ value: '1794',
+ },
+ width: {
+ value: '1080',
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ userId: 'rudder1235678',
+ channel: 'web',
+ context: {
+ ip: '14.5.67.21',
+ app: {
+ build: '1',
+ name: 'RudderAndroidClient',
+ namespace: 'com.rudderstack.demo.android',
+ version: '1.0',
+ },
+ device: {
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '0.1.4',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Mumbai',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
+ },
+ type: 'identify',
+ traits: {
+ email: 'chandan@companyname.com',
+ phone: '92374162212',
+ name: 'John Doe',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Public API Key required for Authentication',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'REVENUE_CAT',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'a5e75d99c8a18acb4a29abd920ec1e2e',
+ },
+ },
+ message: {
+ userId: 'rudder1235678',
+ channel: 'web',
+ context: {
+ ip: '14.5.67.21',
+ app: {
+ build: '1',
+ name: 'RudderAndroidClient',
+ namespace: 'com.rudderstack.demo.android',
+ version: '1.0',
+ },
+ device: {
+ manufacturer: 'Google',
+ model: 'Android SDK built for x86',
+ name: 'generic_x86',
+ type: 'android',
+ },
+ library: {
+ name: 'com.rudderstack.android.sdk.core',
+ version: '0.1.4',
+ },
+ locale: 'en-US',
+ network: {
+ carrier: 'Android',
+ bluetooth: false,
+ cellular: true,
+ wifi: true,
+ },
+ campaign: {
+ source: 'google',
+ medium: 'medium',
+ term: 'keyword',
+ content: 'some content',
+ },
+ os: {
+ name: 'Android',
+ version: '9',
+ },
+ screen: {
+ density: 420,
+ height: 1794,
+ width: 1080,
+ },
+ timezone: 'Asia/Mumbai',
+ userAgent:
+ 'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
+ },
+ type: 'identify',
+ traits: {
+ email: 'chandan@companyname.com',
+ phone: '92374162212',
+ name: 'John Doe',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'GET',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678',
+ headers: {
+ Authorization: 'Basic a5e75d99c8a18acb4a29abd920ec1e2e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/subscribers/rudder1235678/attributes',
+ headers: {
+ Authorization: 'Basic a5e75d99c8a18acb4a29abd920ec1e2e',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributes: {
+ app_user_id: {
+ value: 'rudder1235678',
+ },
+ $displayName: {
+ value: 'John Doe',
+ },
+ $email: {
+ value: 'chandan@companyname.com',
+ },
+ $phoneNumber: {
+ value: '92374162212',
+ },
+ $ip: {
+ value: '14.5.67.21',
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'rudder123',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 15,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123',
+ products: [
+ {
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ {
+ product_id: '345',
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ quantity: 2,
+ category: 'Games',
+ introductory_price: '250',
+ is_restore: false,
+ presented_offering_identifier: '123erd',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'X-Platform is required field',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'REVENUE_CAT',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'rudder123',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 15,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123',
+ products: [
+ {
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ {
+ product_id: '345',
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ quantity: 2,
+ category: 'Games',
+ introductory_price: '250',
+ is_restore: false,
+ presented_offering_identifier: '123erd',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123',
+ currency: 'USD',
+ price: 14,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '345',
+ currency: 'USD',
+ price: 3.45,
+ introductory_price: '250',
+ is_restore: false,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'rudder123',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 15,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123-sa',
+ products: [
+ {
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ {
+ product_id: '345',
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ quantity: 2,
+ category: 'Games',
+ introductory_price: '250',
+ is_restore: false,
+ presented_offering_identifier: '123erd',
+ },
+ {
+ sku: 'G-33',
+ name: 'SunGlass',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ {
+ sku: 'G-35',
+ product_id: '1234sb',
+ name: 'Real-me',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123-sa',
+ currency: 'USD',
+ price: 14,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '345',
+ currency: 'USD',
+ price: 3.45,
+ introductory_price: '250',
+ is_restore: false,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123-sa',
+ currency: 'USD',
+ price: 14,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '1234sb',
+ currency: 'USD',
+ price: 14,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'revenue_cat',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ xPlatform: 'stripe',
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'rudder123',
+ properties: {
+ checkout_id: '12345',
+ order_id: '1234',
+ affiliation: 'Apple Store',
+ total: 20,
+ revenue: 15,
+ shipping: 22,
+ tax: 1,
+ discount: 1.5,
+ coupon: 'ImagePro',
+ currency: 'USD',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123-sa',
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.revenuecat.com/v1/receipts',
+ headers: {
+ Authorization: 'Basic dummyApiKey',
+ 'Content-Type': 'application/json',
+ 'X-Platform': 'stripe',
+ },
+ params: {},
+ body: {
+ JSON: {
+ app_user_id: 'rudder123',
+ fetch_token: 'dummyFetchToken',
+ product_id: '123-sa',
+ price: 14,
+ currency: 'USD',
+ introductory_price: '350',
+ is_restore: true,
+ presented_offering_identifier: '123erd',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/rockerbox/processor/data.ts b/test/integrations/destinations/rockerbox/processor/data.ts
index ff8f6d46209..76dd8ef11bb 100644
--- a/test/integrations/destinations/rockerbox/processor/data.ts
+++ b/test/integrations/destinations/rockerbox/processor/data.ts
@@ -1,749 +1,746 @@
export const data = [
- {
- "name": "rockerbox",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF"
- }
- },
- "message": {
- "context": {
- "traits": {
- "homwTown": "kanpur",
- "age": "24"
- }
- },
- "type": "Identify",
- "userId": "yash001",
- "originalTimestamp": "2019-10-14T09:03:17.562Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Message type identify is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "ROCKERBOX",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "rockerbox",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added To Cart",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "screen": {
- "width": 1440,
- "height": 900,
- "density": 2,
- "innerWidth": 584,
- "innerHeight": 789
- },
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder",
- "subscription": "youtube"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "The event is not associated to a RockerBox event. Aborting!",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "ROCKERBOX",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "rockerbox",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "test id"
- },
- "body": {
- "JSON": {
- "customer_id": "userSampleX138",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "timestamp": 1659902539,
- "conversion_source": "RudderStack",
- "action": "conv.add_to_cart",
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "rockerbox",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "test id",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "clientAuthId": {
- "web": "test-client-auth-id"
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": "Marketing Sample"
- }
- ]
- },
- "customDomain": {
- "web": "https://cookiedomain.com"
- },
- "enableCookieSync": {
- "web": true
- }
- }
- },
- "message": {
- "type": "track",
- "event": "Product Added",
- "sentAt": "2022-08-07T20:02:19.352Z",
- "userId": "userSampleX138",
- "channel": "web",
- "context": {
- "os": {
- "name": "",
- "version": ""
- },
- "locale": "en-IN",
- "traits": {
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "last_name": "Stack",
- "first_name": "Rudder"
- },
- "externalId": [
- {
- "type": "rockerboxExternalId",
- "id": "rbUid"
- }
- ],
- "campaign": {},
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
- },
- "rudderId": "4a47e99b-2afc-45c6-b902-ed69282ca805",
- "messageId": "1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93",
- "properties": {
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt",
- "externalId": "rbUid",
- "countryCode": "IN",
- "listingId": "10101"
- },
- "anonymousId": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "integrations": {
- "All": true
- },
- "originalTimestamp": "2022-08-07T20:02:19.347Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "test id"
- },
- "body": {
- "JSON": {
- "customer_id": "userSampleX138",
- "anonymous_id": "5f093403-1457-4a2c-b4e4-c61ec3bacf56",
- "email": "userSampleX120@gmail.com",
- "phone": "9878764736",
- "timestamp": 1659902539,
- "country_code": "IN",
- "listing_id": "10101",
- "conversion_source": "RudderStack",
- "action": "conv.add_to_cart",
- "checkout_id": "12345",
- "product_url": "http://www.yourdomain.com/products/red-t-shirt",
- "product_name": "Red T-shirt",
- "externalId": "rbUid"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "rockerbox",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "hdowhfiqhfwaiwhrdafshbfacicolsa",
- "eventFilteringOption": "disable",
- "whitelistedEvents": [
- {
- "eventName": ""
- }
- ],
- "blacklistedEvents": [
- {
- "eventName": ""
- }
- ],
- "eventsMap": [
- {
- "from": "Product Added",
- "to": "conv.add_to_cart"
- }
- ],
- "customPropsMapping": [
- {
- "from": "unit_id",
- "to": "unitID"
- },
- {
- "from": "merch_id",
- "to": "merch_id"
- },
- {
- "from": "bounce_id",
- "to": "bounceID"
- }
- ],
- "useNativeSDK": {
- "web": false
- },
- "useNativeSDKToSend": {
- "web": false
- },
- "clientAuthId": {
- "web": ""
- },
- "oneTrustCookieCategories": {
- "web": [
- {
- "oneTrustCookieCategory": ""
- }
- ]
- },
- "customDomain": {
- "web": ""
- },
- "enableCookieSync": {
- "web": false
- }
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "anonymousId": "anon_id",
- "type": "track",
- "traits": {
- "userId": "anon_id",
- "email": "jamesDoe@gmail.com",
- "name": "James Doe",
- "phone": "92374162212",
- "gender": "M",
- "employed": true,
- "birthday": "1614775793",
- "education": "Science",
- "graduate": true,
- "married": true,
- "customerType": "Prime",
- "msg_push": true,
- "msgSms": true,
- "msgemail": true,
- "msgwhatsapp": false,
- "custom_tags": [
- "Test_User",
- "Interested_User",
- "DIY_Hobby"
- ],
- "custom_mappings": {
- "Office": "Trastkiv",
- "Country": "Russia"
- },
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 789223,
- "state": "WB",
- "street": ""
- }
- },
- "properties": {
- "unit_id": 123,
- "merch_id": false,
- "bounceiD": "fakefake",
- "counce_id": ""
- },
- "event": "Product Added",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- },
- "writeKey": "2D0yaayoBD7bp8uFomnBONdedcA",
- "requestIP": "[::1]",
- "receivedAt": "2022-08-08T01:32:19.369+05:30"
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://webhooks.getrockerbox.com/rudderstack",
- "headers": {},
- "params": {
- "advertiser": "hdowhfiqhfwaiwhrdafshbfacicolsa"
- },
- "body": {
- "JSON": {
- "customer_id": "anon_id",
- "anonymous_id": "anon_id",
- "email": "jamesDoe@gmail.com",
- "phone": "92374162212",
- "timestamp": 1571043797,
- "conversion_source": "RudderStack",
- "action": "conv.add_to_cart",
- "unit_id": 123,
- "merch_id": false,
- "bounceiD": "fakefake",
- "counce_id": ""
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "rockerbox",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "advertiserId": "KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF"
- }
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.0.0"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.0.0"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36",
- "locale": "en-US",
- "ip": "0.0.0.0",
- "os": {
- "name": "",
- "version": ""
- },
- "screen": {
- "density": 2
- }
- },
- "messageId": "84e26acc-56a5-4835-8233-591137fca468",
- "session_id": "3049dc4c-5a95-4ccd-a3e7-d74a7e411f22",
- "originalTimestamp": "2019-10-14T09:03:17.562Z",
- "type": "track",
- "traits": {
- "email": "jamesDoe@gmail.com",
- "name": "James Doe",
- "phone": "92374162212",
- "gender": "M",
- "employed": true,
- "birthday": "1614775793",
- "education": "Science",
- "graduate": true,
- "married": true,
- "customerType": "Prime",
- "msg_push": true,
- "msgSms": true,
- "msgemail": true,
- "msgwhatsapp": false,
- "custom_tags": [
- "Test_User",
- "Interested_User",
- "DIY_Hobby"
- ],
- "custom_mappings": {
- "Office": "Trastkiv",
- "Country": "Russia"
- },
- "address": {
- "city": "kolkata",
- "country": "India",
- "postalCode": 789223,
- "state": "WB",
- "street": ""
- }
- },
- "properties": {
- "unit_id": 123,
- "merch_id": false,
- "bounceiD": "fakefake",
- "counce_id": ""
- },
- "event": "Product Added",
- "integrations": {
- "All": true
- },
- "sentAt": "2019-10-14T09:03:22.563Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Anyone of userId or anonymousId is required to make the call",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "ROCKERBOX",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'rockerbox',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ homwTown: 'kanpur',
+ age: '24',
+ },
+ },
+ type: 'Identify',
+ userId: 'yash001',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Message type identify is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'ROCKERBOX',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'rockerbox',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'test id',
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ eventsMap: [
+ {
+ from: 'Product Added To Cart',
+ to: 'conv.add_to_cart',
+ },
+ ],
+ useNativeSDK: {
+ web: false,
+ },
+ clientAuthId: {
+ web: 'test-client-auth-id',
+ },
+ oneTrustCookieCategories: {
+ web: [
+ {
+ oneTrustCookieCategory: 'Marketing Sample',
+ },
+ ],
+ },
+ customDomain: {
+ web: 'https://cookiedomain.com',
+ },
+ enableCookieSync: {
+ web: true,
+ },
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Product Added',
+ sentAt: '2022-08-07T20:02:19.352Z',
+ userId: 'userSampleX138',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ locale: 'en-IN',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 584,
+ innerHeight: 789,
+ },
+ traits: {
+ email: 'userSampleX120@gmail.com',
+ phone: '9878764736',
+ last_name: 'Stack',
+ first_name: 'Rudder',
+ subscription: 'youtube',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
+ },
+ rudderId: '4a47e99b-2afc-45c6-b902-ed69282ca805',
+ messageId: '1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93',
+ properties: {
+ checkout_id: '12345',
+ product_url: 'http://www.yourdomain.com/products/red-t-shirt',
+ product_name: 'Red T-shirt',
+ },
+ anonymousId: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-08-07T20:02:19.347Z',
+ },
+ writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
+ requestIP: '[::1]',
+ receivedAt: '2022-08-08T01:32:19.369+05:30',
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'The event is not associated to a RockerBox event. Aborting!',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'ROCKERBOX',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'rockerbox',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'test id',
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ eventsMap: [
+ {
+ from: 'Product Added',
+ to: 'conv.add_to_cart',
+ },
+ ],
+ useNativeSDK: {
+ web: false,
+ },
+ clientAuthId: {
+ web: 'test-client-auth-id',
+ },
+ oneTrustCookieCategories: {
+ web: [
+ {
+ oneTrustCookieCategory: 'Marketing Sample',
+ },
+ ],
+ },
+ customDomain: {
+ web: 'https://cookiedomain.com',
+ },
+ enableCookieSync: {
+ web: true,
+ },
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Product Added',
+ sentAt: '2022-08-07T20:02:19.352Z',
+ userId: 'userSampleX138',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ locale: 'en-IN',
+ traits: {
+ email: 'userSampleX120@gmail.com',
+ phone: '9878764736',
+ last_name: 'Stack',
+ first_name: 'Rudder',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
+ },
+ rudderId: '4a47e99b-2afc-45c6-b902-ed69282ca805',
+ messageId: '1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93',
+ properties: {
+ checkout_id: '12345',
+ product_url: 'http://www.yourdomain.com/products/red-t-shirt',
+ product_name: 'Red T-shirt',
+ },
+ anonymousId: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-08-07T20:02:19.347Z',
+ },
+ writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
+ requestIP: '[::1]',
+ receivedAt: '2022-08-08T01:32:19.369+05:30',
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://webhooks.getrockerbox.com/rudderstack',
+ headers: {},
+ params: {
+ advertiser: 'test id',
+ },
+ body: {
+ JSON: {
+ customer_id: 'userSampleX138',
+ anonymous_id: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
+ email: 'userSampleX120@gmail.com',
+ phone: '9878764736',
+ timestamp: 1659902539,
+ conversion_source: 'RudderStack',
+ action: 'conv.add_to_cart',
+ checkout_id: '12345',
+ product_url: 'http://www.yourdomain.com/products/red-t-shirt',
+ product_name: 'Red T-shirt',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'rockerbox',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'test id',
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ eventsMap: [
+ {
+ from: 'Product Added',
+ to: 'conv.add_to_cart',
+ },
+ ],
+ useNativeSDK: {
+ web: false,
+ },
+ clientAuthId: {
+ web: 'test-client-auth-id',
+ },
+ oneTrustCookieCategories: {
+ web: [
+ {
+ oneTrustCookieCategory: 'Marketing Sample',
+ },
+ ],
+ },
+ customDomain: {
+ web: 'https://cookiedomain.com',
+ },
+ enableCookieSync: {
+ web: true,
+ },
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'Product Added',
+ sentAt: '2022-08-07T20:02:19.352Z',
+ userId: 'userSampleX138',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ locale: 'en-IN',
+ traits: {
+ email: 'userSampleX120@gmail.com',
+ phone: '9878764736',
+ last_name: 'Stack',
+ first_name: 'Rudder',
+ },
+ externalId: [
+ {
+ type: 'rockerboxExternalId',
+ id: 'rbUid',
+ },
+ ],
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
+ },
+ rudderId: '4a47e99b-2afc-45c6-b902-ed69282ca805',
+ messageId: '1659902539347900-c622426c-a1dd-44c0-ac6d-d4dbee3f4a93',
+ properties: {
+ checkout_id: '12345',
+ product_url: 'http://www.yourdomain.com/products/red-t-shirt',
+ product_name: 'Red T-shirt',
+ externalId: 'rbUid',
+ countryCode: 'IN',
+ listingId: '10101',
+ },
+ anonymousId: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-08-07T20:02:19.347Z',
+ },
+ writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
+ requestIP: '[::1]',
+ receivedAt: '2022-08-08T01:32:19.369+05:30',
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://webhooks.getrockerbox.com/rudderstack',
+ headers: {},
+ params: {
+ advertiser: 'test id',
+ },
+ body: {
+ JSON: {
+ customer_id: 'userSampleX138',
+ anonymous_id: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
+ email: 'userSampleX120@gmail.com',
+ phone: '9878764736',
+ timestamp: 1659902539,
+ country_code: 'IN',
+ listing_id: '10101',
+ conversion_source: 'RudderStack',
+ action: 'conv.add_to_cart',
+ checkout_id: '12345',
+ product_url: 'http://www.yourdomain.com/products/red-t-shirt',
+ product_name: 'Red T-shirt',
+ externalId: 'rbUid',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'rockerbox',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'hdowhfiqhfwaiwhrdafshbfacicolsa',
+ eventFilteringOption: 'disable',
+ whitelistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ blacklistedEvents: [
+ {
+ eventName: '',
+ },
+ ],
+ eventsMap: [
+ {
+ from: 'Product Added',
+ to: 'conv.add_to_cart',
+ },
+ ],
+ customPropsMapping: [
+ {
+ from: 'unit_id',
+ to: 'unitID',
+ },
+ {
+ from: 'merch_id',
+ to: 'merch_id',
+ },
+ {
+ from: 'bounce_id',
+ to: 'bounceID',
+ },
+ ],
+ useNativeSDK: {
+ web: false,
+ },
+ useNativeSDKToSend: {
+ web: false,
+ },
+ clientAuthId: {
+ web: '',
+ },
+ oneTrustCookieCategories: {
+ web: [
+ {
+ oneTrustCookieCategory: '',
+ },
+ ],
+ },
+ customDomain: {
+ web: '',
+ },
+ enableCookieSync: {
+ web: false,
+ },
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: 'anon_id',
+ type: 'track',
+ traits: {
+ userId: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ properties: {
+ unit_id: 123,
+ merch_id: false,
+ bounceiD: 'fakefake',
+ counce_id: '',
+ },
+ event: 'Product Added',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
+ requestIP: '[::1]',
+ receivedAt: '2022-08-08T01:32:19.369+05:30',
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://webhooks.getrockerbox.com/rudderstack',
+ headers: {},
+ params: {
+ advertiser: 'hdowhfiqhfwaiwhrdafshbfacicolsa',
+ },
+ body: {
+ JSON: {
+ customer_id: 'anon_id',
+ anonymous_id: 'anon_id',
+ email: 'jamesDoe@gmail.com',
+ phone: '92374162212',
+ timestamp: 1571043797,
+ conversion_source: 'RudderStack',
+ action: 'conv.add_to_cart',
+ unit_id: 123,
+ merch_id: false,
+ bounceiD: 'fakefake',
+ counce_id: '',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'rockerbox',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ advertiserId: 'KDH4JNDHCFJHJ57SJOWJE490W01JFNHGDSSFHDKDSDF',
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ traits: {
+ email: 'jamesDoe@gmail.com',
+ name: 'James Doe',
+ phone: '92374162212',
+ gender: 'M',
+ employed: true,
+ birthday: '1614775793',
+ education: 'Science',
+ graduate: true,
+ married: true,
+ customerType: 'Prime',
+ msg_push: true,
+ msgSms: true,
+ msgemail: true,
+ msgwhatsapp: false,
+ custom_tags: ['Test_User', 'Interested_User', 'DIY_Hobby'],
+ custom_mappings: {
+ Office: 'Trastkiv',
+ Country: 'Russia',
+ },
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 789223,
+ state: 'WB',
+ street: '',
+ },
+ },
+ properties: {
+ unit_id: 123,
+ merch_id: false,
+ bounceiD: 'fakefake',
+ counce_id: '',
+ },
+ event: 'Product Added',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Anyone of userId or anonymousId is required to make the call',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'ROCKERBOX',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/rockerbox/router/data.ts b/test/integrations/destinations/rockerbox/router/data.ts
index caa8f1ba08d..af943d7e6b6 100644
--- a/test/integrations/destinations/rockerbox/router/data.ts
+++ b/test/integrations/destinations/rockerbox/router/data.ts
@@ -14,46 +14,19 @@ export const data = [
Config: {
advertiserId: 'test id',
eventFilteringOption: 'disable',
- whitelistedEvents: [
- {
- eventName: '',
- },
- ],
- blacklistedEvents: [
- {
- eventName: '',
- },
- ],
- eventsMap: [
- {
- from: 'Product Added',
- to: 'conv.add_to_cart',
- },
- ],
- useNativeSDK: {
- web: false,
- },
- clientAuthId: {
- web: 'test-client-auth-id',
- },
+ whitelistedEvents: [{ eventName: '' }],
+ blacklistedEvents: [{ eventName: '' }],
+ eventsMap: [{ from: 'Product Added', to: 'conv.add_to_cart' }],
+ useNativeSDK: { web: false },
+ clientAuthId: { web: 'test-client-auth-id' },
oneTrustCookieCategories: {
- web: [
- {
- oneTrustCookieCategory: 'Marketing Sample',
- },
- ],
- },
- customDomain: {
- web: 'https://cookiedomain.com',
- },
- enableCookieSync: {
- web: true,
+ web: [{ oneTrustCookieCategory: 'Marketing Sample' }],
},
+ customDomain: { web: 'https://cookiedomain.com' },
+ enableCookieSync: { web: true },
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
type: 'track',
event: 'Product Added',
@@ -61,10 +34,7 @@ export const data = [
userId: 'userSampleX138',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
locale: 'en-IN',
traits: {
email: 'userSampleX120@gmail.com',
@@ -84,9 +54,7 @@ export const data = [
product_name: 'Red T-shirt',
},
anonymousId: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2022-08-07T20:02:19.347Z',
},
writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
@@ -147,7 +115,7 @@ export const data = [
whitelistedEvents: [{ eventName: '' }],
},
},
- metadata: [{ jobId: 1 }],
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
],
@@ -170,46 +138,19 @@ export const data = [
Config: {
advertiserId: 'test id',
eventFilteringOption: 'disable',
- whitelistedEvents: [
- {
- eventName: '',
- },
- ],
- blacklistedEvents: [
- {
- eventName: '',
- },
- ],
- eventsMap: [
- {
- from: 'Product Viewed',
- to: 'conv.add_to_cart',
- },
- ],
- useNativeSDK: {
- web: false,
- },
- clientAuthId: {
- web: 'test-client-auth-id',
- },
+ whitelistedEvents: [{ eventName: '' }],
+ blacklistedEvents: [{ eventName: '' }],
+ eventsMap: [{ from: 'Product Viewed', to: 'conv.add_to_cart' }],
+ useNativeSDK: { web: false },
+ clientAuthId: { web: 'test-client-auth-id' },
oneTrustCookieCategories: {
- web: [
- {
- oneTrustCookieCategory: 'Marketing Sample',
- },
- ],
- },
- customDomain: {
- web: 'https://cookiedomain.com',
- },
- enableCookieSync: {
- web: true,
+ web: [{ oneTrustCookieCategory: 'Marketing Sample' }],
},
+ customDomain: { web: 'https://cookiedomain.com' },
+ enableCookieSync: { web: true },
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
type: 'track',
event: 'Product Viewed',
@@ -217,10 +158,7 @@ export const data = [
userId: 'userSampleX138',
channel: 'web',
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
locale: 'en-IN',
traits: {
email: 'userSampleX120@gmail.com',
@@ -240,9 +178,7 @@ export const data = [
product_name: 'Red T-shirt',
},
anonymousId: '5f093403-1457-4a2c-b4e4-c61ec3bacf56',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2022-08-07T20:02:19.347Z',
},
writeKey: '2D0yaayoBD7bp8uFomnBONdedcA',
@@ -303,7 +239,7 @@ export const data = [
whitelistedEvents: [{ eventName: '' }],
},
},
- metadata: [{ jobId: 2 }],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
],
diff --git a/test/integrations/destinations/salesforce/dataDelivery/data.ts b/test/integrations/destinations/salesforce/dataDelivery/data.ts
index 2f1e04815b1..cfaa75e23e3 100644
--- a/test/integrations/destinations/salesforce/dataDelivery/data.ts
+++ b/test/integrations/destinations/salesforce/dataDelivery/data.ts
@@ -58,11 +58,6 @@ export const data = [
statusText: 'No Content',
},
status: 204,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
},
},
@@ -128,11 +123,6 @@ export const data = [
errorCode: 'INVALID_SESSION_ID',
},
],
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
status: 401,
},
statTags: {
@@ -210,11 +200,6 @@ export const data = [
},
],
status: 401,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
@@ -291,11 +276,6 @@ export const data = [
},
],
status: 403,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
@@ -372,11 +352,6 @@ export const data = [
},
],
status: 503,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
@@ -451,11 +426,6 @@ export const data = [
error_description: 'authentication failure',
},
status: 400,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
@@ -526,11 +496,6 @@ export const data = [
errorCode: 'SERVER_UNAVAILABLE',
message: 'Server Unavailable',
},
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
status: 503,
},
message:
@@ -619,11 +584,6 @@ export const data = [
],
},
status: 200,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
},
},
@@ -685,11 +645,6 @@ export const data = [
destinationResponse: {
response: '[ECONNABORTED] :: Connection aborted',
status: 500,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
@@ -783,11 +738,6 @@ export const data = [
destinationResponse: {
response: '[EAI_AGAIN] :: Temporary failure in name resolution',
status: 500,
- rudderJobMetadata: {
- destInfo: {
- authKey: '2HezPl1w11opbFSxnLDEgZ7kWTf',
- },
- },
},
statTags: {
destType: 'SALESFORCE',
diff --git a/test/integrations/destinations/salesforce/router/data.ts b/test/integrations/destinations/salesforce/router/data.ts
index 8c36d3a785f..4a37f7ed401 100644
--- a/test/integrations/destinations/salesforce/router/data.ts
+++ b/test/integrations/destinations/salesforce/router/data.ts
@@ -1,10 +1,8 @@
-import { FEATURES } from '../../../../../src/v0/util/tags';
-
export const data = [
{
name: 'salesforce',
description: 'Test 0',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -23,18 +21,10 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
anonymousId: '1e7673da-9473-49c6-97f7-da848ecafa76',
company: 'Initech',
@@ -54,9 +44,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'f19c35da-e9de-4c6e-b6e5-9e60cccc12c8',
originalTimestamp: '2020-01-27T12:20:55.301Z',
receivedAt: '2020-01-27T17:50:58.657+05:30',
@@ -66,9 +54,7 @@ export const data = [
type: 'identify',
userId: '1e7673da-9473-49c6-97f7-da848ecafa76',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
initialAccessToken: 'dummyInitialAccessToken',
@@ -133,12 +119,7 @@ export const data = [
},
],
metadata: [
- {
- destInfo: {
- authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y',
- },
- jobId: 1,
- },
+ { destInfo: { authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y' }, jobId: 1, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -167,7 +148,7 @@ export const data = [
{
name: 'salesforce',
description: 'Test 1',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -186,18 +167,10 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
traits: {
anonymousId: '1e7673da-9473-49c6-97f7-da848ecafa76',
company: 'Initech',
@@ -217,9 +190,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'f19c35da-e9de-4c6e-b6e5-9e60cccc12c8',
originalTimestamp: '2020-01-27T12:20:55.301Z',
receivedAt: '2020-01-27T17:50:58.657+05:30',
@@ -229,9 +200,7 @@ export const data = [
type: 'identify',
userId: '1e7673da-9473-49c6-97f7-da848ecafa76',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
initialAccessToken: 'dummyInitialAccessToken',
@@ -297,12 +266,7 @@ export const data = [
},
],
metadata: [
- {
- destInfo: {
- authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y',
- },
- jobId: 2,
- },
+ { destInfo: { authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y' }, jobId: 2, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -331,7 +295,7 @@ export const data = [
{
name: 'salesforce',
description: 'Test 2',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -350,24 +314,14 @@ export const data = [
version: '1.0.0',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
traits: {
anonymousId: '1e7673da-9473-49c6-97f7-da848ecafa76',
company: 'Initech',
@@ -393,9 +347,7 @@ export const data = [
type: 'identify',
userId: '1e7673da-9473-49c6-97f7-da848ecafa76',
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
Config: {
initialAccessToken: 'dummyInitialAccessToken',
@@ -460,12 +412,7 @@ export const data = [
},
],
metadata: [
- {
- destInfo: {
- authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y',
- },
- jobId: 3,
- },
+ { destInfo: { authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y' }, jobId: 3, userId: 'u1' },
],
batched: false,
statusCode: 200,
@@ -494,7 +441,7 @@ export const data = [
{
name: 'salesforce',
description: 'Test 3',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -535,9 +482,7 @@ export const data = [
files: {},
statusCode: 200,
},
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
destination: {
Config: {
initialAccessToken: 'dummyInitialAccessToken',
@@ -601,12 +546,7 @@ export const data = [
statusCode: 200,
},
metadata: [
- {
- destInfo: {
- authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y',
- },
- jobId: 4,
- },
+ { destInfo: { authKey: '1WqFFH5esuVPnUgHkvEoYxDcX3y' }, jobId: 4, userId: 'u1' },
],
batched: false,
statusCode: 200,
diff --git a/test/integrations/destinations/segment/processor/data.ts b/test/integrations/destinations/segment/processor/data.ts
index 0a140e2b998..9ba9601d6ef 100644
--- a/test/integrations/destinations/segment/processor/data.ts
+++ b/test/integrations/destinations/segment/processor/data.ts
@@ -1,670 +1,675 @@
export const data = [
- {
- "name": "segment",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1afmecIpsJm7D72aRTksxyODrwR",
- "Name": "Segment",
- "DestinationDefinition": {
- "ID": "1afjjahf0X5lSyNze7Xh7aqJs11",
- "Name": "SEGMENT",
- "DisplayName": "Segment",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "writeKey": "abcdefghijklmnopqrstuvwxyz"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.2"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.2"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "age": 23,
- "email": "testmp@rudderstack.com",
- "firstname": "Test Kafka"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "258b77c6-442d-4bdc-8729-f0e4cef41353",
- "name": "home",
- "originalTimestamp": "2020-04-17T14:55:31.367Z",
- "properties": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "receivedAt": "2020-04-17T20:25:31.381+05:30",
- "request_ip": "[::1]:57363",
- "sentAt": "2020-04-17T14:55:31.367Z",
- "timestamp": "2020-04-17T20:25:31.381+05:30",
- "type": "page",
- "userId": "user12345"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "userId": "user12345",
- "endpoint": "https://api.segment.io/v1/batch",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch": [
- {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "type": "page",
- "userId": "user12345",
- "traits": {
- "age": 23,
- "email": "testmp@rudderstack.com",
- "firstname": "Test Kafka"
- },
- "properties": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "timeStamp": "2020-04-17T20:25:31.381+05:30"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "statusCode": 200
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "segment",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1afmecIpsJm7D72aRTksxyODrwR",
- "Name": "Segment",
- "DestinationDefinition": {
- "ID": "1afjjahf0X5lSyNze7Xh7aqJs11",
- "Name": "SEGMENT",
- "DisplayName": "Segment",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "writeKey": "abcdefghijklmnopqrstuvwxyz"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.2"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.2"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "age": 23,
- "email": "testmp@email.com",
- "firstname": "Test Transformer"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "023a3a48-190a-4968-9394-a8e99b81a3c0",
- "originalTimestamp": "2020-04-17T14:55:31.37Z",
- "receivedAt": "2020-04-17T20:25:31.401+05:30",
- "request_ip": "[::1]:57364",
- "sentAt": "2020-04-17T14:55:31.37Z",
- "timestamp": "2020-04-17T20:25:31.401+05:30",
- "type": "identify",
- "userId": "user12345"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "user12345",
- "method": "POST",
- "endpoint": "https://api.segment.io/v1/batch",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch": [
- {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "type": "identify",
- "userId": "user12345",
- "traits": {
- "age": 23,
- "email": "testmp@email.com",
- "firstname": "Test Transformer"
- },
- "timeStamp": "2020-04-17T20:25:31.401+05:30"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "statusCode": 200
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "segment",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1afmecIpsJm7D72aRTksxyODrwR",
- "Name": "Segment",
- "DestinationDefinition": {
- "ID": "1afjjahf0X5lSyNze7Xh7aqJs11",
- "Name": "SEGMENT",
- "DisplayName": "Segment",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "writeKey": "abcdefghijklmnopqrstuvwxyz"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.2"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.2"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "age": 23,
- "email": "testmp@email.com",
- "firstname": "Test Transformer"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
- },
- "event": "test track with property",
- "integrations": {
- "All": true
- },
- "messageId": "584fde02-901a-4964-a4a0-4078b999d5b2",
- "originalTimestamp": "2020-04-17T14:55:31.372Z",
- "properties": {
- "test_prop_1": "test prop",
- "test_prop_2": 1232
- },
- "receivedAt": "2020-04-17T20:25:31.401+05:30",
- "request_ip": "[::1]:57365",
- "sentAt": "2020-04-17T14:55:31.372Z",
- "timestamp": "2020-04-17T20:25:31.401+05:30",
- "type": "track",
- "userId": "user12345"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "userId": "user12345",
- "method": "POST",
- "endpoint": "https://api.segment.io/v1/batch",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch": [
- {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "type": "track",
- "userId": "user12345",
- "event": "test track with property",
- "traits": {
- "age": 23,
- "email": "testmp@email.com",
- "firstname": "Test Transformer"
- },
- "properties": {
- "test_prop_1": "test prop",
- "test_prop_2": 1232
- },
- "timeStamp": "2020-04-17T20:25:31.401+05:30"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "statusCode": 200
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "segment",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1afmecIpsJm7D72aRTksxyODrwR",
- "Name": "Segment",
- "DestinationDefinition": {
- "ID": "1afjjahf0X5lSyNze7Xh7aqJs11",
- "Name": "SEGMENT",
- "DisplayName": "Segment",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "writeKey": "abcdefghijklmnopqrstuvwxyz"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.2"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.2"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "screen": {
- "density": 2
- },
- "traits": {
- "age": 23,
- "email": "testmp@rudderstack.com",
- "firstname": "Test Kafka"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "258b77c6-442d-4bdc-8729-f0e4cef41353",
- "name": "home",
- "originalTimestamp": "2020-04-17T14:55:31.367Z",
- "properties": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "receivedAt": "2020-04-17T20:25:31.381+05:30",
- "request_ip": "[::1]:57363",
- "sentAt": "2020-04-17T14:55:31.367Z",
- "timestamp": "2020-04-17T20:25:31.381+05:30",
- "type": "page",
- "userId": "user12345"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.segment.io/v1/batch",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch": [
- {
- "type": "page",
- "userId": "user12345",
- "traits": {
- "age": 23,
- "email": "testmp@rudderstack.com",
- "firstname": "Test Kafka"
- },
- "properties": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "timeStamp": "2020-04-17T20:25:31.381+05:30"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "user12345",
- "statusCode": 200
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "segment",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1afmecIpsJm7D72aRTksxyODrwR",
- "Name": "Segment",
- "DestinationDefinition": {
- "ID": "1afjjahf0X5lSyNze7Xh7aqJs11",
- "Name": "SEGMENT",
- "DisplayName": "Segment",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "writeKey": "abcdefghijklmnopqrstuvwxyz"
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.2"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.2"
- },
- "locale": "en-GB",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/index4.html",
- "referrer": "",
- "search": "",
- "title": "",
- "url": "http://localhost/tests/html/index4.html"
- },
- "screen": {
- "density": 2
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36"
- },
- "event": "test track with property",
- "integrations": {
- "All": true
- },
- "messageId": "584fde02-901a-4964-a4a0-4078b999d5b2",
- "originalTimestamp": "2020-04-17T14:55:31.372Z",
- "properties": {
- "test_prop_1": "test prop",
- "test_prop_2": 1232
- },
- "receivedAt": "2020-04-17T20:25:31.401+05:30",
- "request_ip": "[::1]:57365",
- "sentAt": "2020-04-17T14:55:31.372Z",
- "timestamp": "2020-04-17T20:25:31.401+05:30",
- "type": "track",
- "userId": "user12345"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.segment.io/v1/batch",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch": [
- {
- "anonymousId": "ac7722c2-ccb6-4ae2-baf6-1effe861f4cd",
- "type": "track",
- "userId": "user12345",
- "event": "test track with property",
- "properties": {
- "test_prop_1": "test prop",
- "test_prop_2": 1232
- },
- "timeStamp": "2020-04-17T20:25:31.401+05:30"
- }
- ]
- },
- "XML": {},
- "JSON_ARRAY": {},
- "FORM": {}
- },
- "files": {},
- "userId": "user12345",
- "statusCode": 200
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'segment',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1afmecIpsJm7D72aRTksxyODrwR',
+ Name: 'Segment',
+ DestinationDefinition: {
+ ID: '1afjjahf0X5lSyNze7Xh7aqJs11',
+ Name: 'SEGMENT',
+ DisplayName: 'Segment',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ writeKey: 'abcdefghijklmnopqrstuvwxyz',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.2',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.2',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ age: 23,
+ email: 'testmp@rudderstack.com',
+ firstname: 'Test Kafka',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '258b77c6-442d-4bdc-8729-f0e4cef41353',
+ name: 'home',
+ originalTimestamp: '2020-04-17T14:55:31.367Z',
+ properties: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ receivedAt: '2020-04-17T20:25:31.381+05:30',
+ request_ip: '[::1]:57363',
+ sentAt: '2020-04-17T14:55:31.367Z',
+ timestamp: '2020-04-17T20:25:31.381+05:30',
+ type: 'page',
+ userId: 'user12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ userId: 'user12345',
+ endpoint: 'https://api.segment.io/v1/batch',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch: [
+ {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ type: 'page',
+ userId: 'user12345',
+ traits: {
+ age: 23,
+ email: 'testmp@rudderstack.com',
+ firstname: 'Test Kafka',
+ },
+ properties: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ timeStamp: '2020-04-17T20:25:31.381+05:30',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ statusCode: 200,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'segment',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1afmecIpsJm7D72aRTksxyODrwR',
+ Name: 'Segment',
+ DestinationDefinition: {
+ ID: '1afjjahf0X5lSyNze7Xh7aqJs11',
+ Name: 'SEGMENT',
+ DisplayName: 'Segment',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ writeKey: 'abcdefghijklmnopqrstuvwxyz',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.2',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.2',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ age: 23,
+ email: 'testmp@email.com',
+ firstname: 'Test Transformer',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '023a3a48-190a-4968-9394-a8e99b81a3c0',
+ originalTimestamp: '2020-04-17T14:55:31.37Z',
+ receivedAt: '2020-04-17T20:25:31.401+05:30',
+ request_ip: '[::1]:57364',
+ sentAt: '2020-04-17T14:55:31.37Z',
+ timestamp: '2020-04-17T20:25:31.401+05:30',
+ type: 'identify',
+ userId: 'user12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: 'user12345',
+ method: 'POST',
+ endpoint: 'https://api.segment.io/v1/batch',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch: [
+ {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ type: 'identify',
+ userId: 'user12345',
+ traits: {
+ age: 23,
+ email: 'testmp@email.com',
+ firstname: 'Test Transformer',
+ },
+ timeStamp: '2020-04-17T20:25:31.401+05:30',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ statusCode: 200,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'segment',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1afmecIpsJm7D72aRTksxyODrwR',
+ Name: 'Segment',
+ DestinationDefinition: {
+ ID: '1afjjahf0X5lSyNze7Xh7aqJs11',
+ Name: 'SEGMENT',
+ DisplayName: 'Segment',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ writeKey: 'abcdefghijklmnopqrstuvwxyz',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.2',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.2',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ age: 23,
+ email: 'testmp@email.com',
+ firstname: 'Test Transformer',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ event: 'test track with property',
+ integrations: {
+ All: true,
+ },
+ messageId: '584fde02-901a-4964-a4a0-4078b999d5b2',
+ originalTimestamp: '2020-04-17T14:55:31.372Z',
+ properties: {
+ test_prop_1: 'test prop',
+ test_prop_2: 1232,
+ },
+ receivedAt: '2020-04-17T20:25:31.401+05:30',
+ request_ip: '[::1]:57365',
+ sentAt: '2020-04-17T14:55:31.372Z',
+ timestamp: '2020-04-17T20:25:31.401+05:30',
+ type: 'track',
+ userId: 'user12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: 'user12345',
+ method: 'POST',
+ endpoint: 'https://api.segment.io/v1/batch',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch: [
+ {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ type: 'track',
+ userId: 'user12345',
+ event: 'test track with property',
+ traits: {
+ age: 23,
+ email: 'testmp@email.com',
+ firstname: 'Test Transformer',
+ },
+ properties: {
+ test_prop_1: 'test prop',
+ test_prop_2: 1232,
+ },
+ timeStamp: '2020-04-17T20:25:31.401+05:30',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ statusCode: 200,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'segment',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1afmecIpsJm7D72aRTksxyODrwR',
+ Name: 'Segment',
+ DestinationDefinition: {
+ ID: '1afjjahf0X5lSyNze7Xh7aqJs11',
+ Name: 'SEGMENT',
+ DisplayName: 'Segment',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ writeKey: 'abcdefghijklmnopqrstuvwxyz',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.2',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.2',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: {
+ age: 23,
+ email: 'testmp@rudderstack.com',
+ firstname: 'Test Kafka',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '258b77c6-442d-4bdc-8729-f0e4cef41353',
+ name: 'home',
+ originalTimestamp: '2020-04-17T14:55:31.367Z',
+ properties: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ receivedAt: '2020-04-17T20:25:31.381+05:30',
+ request_ip: '[::1]:57363',
+ sentAt: '2020-04-17T14:55:31.367Z',
+ timestamp: '2020-04-17T20:25:31.381+05:30',
+ type: 'page',
+ userId: 'user12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.segment.io/v1/batch',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch: [
+ {
+ type: 'page',
+ userId: 'user12345',
+ traits: {
+ age: 23,
+ email: 'testmp@rudderstack.com',
+ firstname: 'Test Kafka',
+ },
+ properties: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ timeStamp: '2020-04-17T20:25:31.381+05:30',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user12345',
+ statusCode: 200,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'segment',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1afmecIpsJm7D72aRTksxyODrwR',
+ Name: 'Segment',
+ DestinationDefinition: {
+ ID: '1afjjahf0X5lSyNze7Xh7aqJs11',
+ Name: 'SEGMENT',
+ DisplayName: 'Segment',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ writeKey: 'abcdefghijklmnopqrstuvwxyz',
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.2',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.2',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/index4.html',
+ referrer: '',
+ search: '',
+ title: '',
+ url: 'http://localhost/tests/html/index4.html',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
+ },
+ event: 'test track with property',
+ integrations: {
+ All: true,
+ },
+ messageId: '584fde02-901a-4964-a4a0-4078b999d5b2',
+ originalTimestamp: '2020-04-17T14:55:31.372Z',
+ properties: {
+ test_prop_1: 'test prop',
+ test_prop_2: 1232,
+ },
+ receivedAt: '2020-04-17T20:25:31.401+05:30',
+ request_ip: '[::1]:57365',
+ sentAt: '2020-04-17T14:55:31.372Z',
+ timestamp: '2020-04-17T20:25:31.401+05:30',
+ type: 'track',
+ userId: 'user12345',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.segment.io/v1/batch',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo6',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch: [
+ {
+ anonymousId: 'ac7722c2-ccb6-4ae2-baf6-1effe861f4cd',
+ type: 'track',
+ userId: 'user12345',
+ event: 'test track with property',
+ properties: {
+ test_prop_1: 'test prop',
+ test_prop_2: 1232,
+ },
+ timeStamp: '2020-04-17T20:25:31.401+05:30',
+ },
+ ],
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: 'user12345',
+ statusCode: 200,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sendgrid/network.ts b/test/integrations/destinations/sendgrid/network.ts
index 18a8a8d34d9..29cfbf84463 100644
--- a/test/integrations/destinations/sendgrid/network.ts
+++ b/test/integrations/destinations/sendgrid/network.ts
@@ -106,5 +106,165 @@ const deleteNwData = [
},
},
},
+ {
+ httpReq: {
+ method: 'get',
+ url: 'https://api.sendgrid.com/v3/marketing/field_definitions',
+ headers: {
+ Authorization: 'Bearer apikey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ status: 200,
+ statusText: 'OK',
+ data: {
+ custom_fields: [
+ {
+ id: 'w1_T',
+ name: 'user_name',
+ field_type: 'Text',
+ _metadata: {
+ self: 'https://api.sendgrid.com/v3/marketing/field_definitions/w1_T',
+ },
+ },
+ ],
+ reserved_fields: [
+ {
+ id: '_rf0_T',
+ name: 'first_name',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf1_T',
+ name: 'last_name',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf2_T',
+ name: 'email',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf3_T',
+ name: 'alternate_emails',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf4_T',
+ name: 'address_line_1',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf5_T',
+ name: 'address_line_2',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf6_T',
+ name: 'city',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf7_T',
+ name: 'state_province_region',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf8_T',
+ name: 'postal_code',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf9_T',
+ name: 'country',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf10_T',
+ name: 'phone_number',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf11_T',
+ name: 'whatsapp',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf12_T',
+ name: 'line',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf13_T',
+ name: 'facebook',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf14_T',
+ name: 'unique_name',
+ field_type: 'Text',
+ },
+ {
+ id: '_rf15_T',
+ name: 'email_domains',
+ field_type: 'Text',
+ read_only: true,
+ },
+ {
+ id: '_rf16_D',
+ name: 'last_clicked',
+ field_type: 'Date',
+ read_only: true,
+ },
+ {
+ id: '_rf17_D',
+ name: 'last_opened',
+ field_type: 'Date',
+ read_only: true,
+ },
+ {
+ id: '_rf18_D',
+ name: 'last_emailed',
+ field_type: 'Date',
+ read_only: true,
+ },
+ {
+ id: '_rf19_T',
+ name: 'singlesend_id',
+ field_type: 'Text',
+ read_only: true,
+ },
+ {
+ id: '_rf20_T',
+ name: 'automation_id',
+ field_type: 'Text',
+ read_only: true,
+ },
+ {
+ id: '_rf21_D',
+ name: 'created_at',
+ field_type: 'Date',
+ read_only: true,
+ },
+ {
+ id: '_rf22_D',
+ name: 'updated_at',
+ field_type: 'Date',
+ read_only: true,
+ },
+ {
+ id: '_rf23_T',
+ name: 'contact_id',
+ field_type: 'Text',
+ read_only: true,
+ },
+ ],
+ _metadata: {
+ self: 'https://api.sendgrid.com/v3/marketing/field_definitions',
+ },
+ },
+ },
+ },
];
export const networkCallsData = [...deleteNwData];
diff --git a/test/integrations/destinations/sendgrid/processor/data.ts b/test/integrations/destinations/sendgrid/processor/data.ts
new file mode 100644
index 00000000000..b1550787b54
--- /dev/null
+++ b/test/integrations/destinations/sendgrid/processor/data.ts
@@ -0,0 +1,1544 @@
+export const data = [
+ {
+ name: 'sendgrid',
+ description: 'Identify call without an email',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [
+ {
+ event: 'open',
+ },
+ ],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [
+ {
+ groupId: '',
+ },
+ ],
+ html: '',
+ listId: 'list111',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ type: 'identify',
+ userId: 'user@1',
+ context: {
+ traits: {
+ age: '25',
+ city: 'Surat',
+ phone: '+91 9876543210',
+ lastName: 'test',
+ firstName: 'rudder',
+ state: 'Gujarat',
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Parameter mail is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SENDGRID',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Identify call with list_id configured from web-app',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [
+ {
+ event: 'open',
+ },
+ ],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [
+ {
+ groupId: '',
+ },
+ ],
+ html: '',
+ listId: 'list111',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ type: 'identify',
+ userId: 'user@1',
+ context: {
+ traits: {
+ age: '25',
+ city: 'Surat',
+ email: 'test@rudderstack.com',
+ phone: '+91 9876543210',
+ lastName: 'test',
+ firstName: 'rudder',
+ state: 'Gujarat',
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contactDetails: {
+ email: 'test@rudderstack.com',
+ phone_number: '+91 9876543210',
+ first_name: 'rudder',
+ last_name: 'test',
+ custom_fields: {},
+ },
+ contactListIds: 'list111',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Identify call with no list-id given',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [
+ {
+ from: 'name',
+ to: 'user_name',
+ },
+ ],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [
+ {
+ event: 'open',
+ },
+ ],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [
+ {
+ groupId: '',
+ },
+ ],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ type: 'identify',
+ userId: 'user@1',
+ context: {
+ traits: {
+ age: '25',
+ city: 'Surat',
+ name: 'rudder test',
+ email: 'test@rudderstack.com',
+ phone: '+91 9876543210',
+ lastName: 'test',
+ firstName: 'rudder',
+ state: 'Gujarat',
+ },
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON: {
+ contactDetails: {
+ email: 'test@rudderstack.com',
+ last_name: 'test',
+ first_name: 'rudder',
+ unique_name: 'rudder test',
+ phone_number: '+91 9876543210',
+ custom_fields: {
+ w1_T: 'rudder test',
+ },
+ },
+ contactListIds: '',
+ },
+ JSON_ARRAY: {},
+ },
+ type: 'REST',
+ userId: '',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ version: '1',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ text: null,
+ utmContent: null,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ reply_to: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ reply_to: {
+ email: 'testing@gmail.com',
+ },
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ group: '12345',
+ groupsToDisplay: [
+ {
+ groupId: '12345',
+ },
+ {
+ groupId: 'abc',
+ },
+ {
+ groupId: '12346',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ reply_to: {
+ email: 'testing@gmail.com',
+ },
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ asm: {
+ group_id: 12345,
+ groups_to_display: [12345, 12346],
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track call without an event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ group: '12345',
+ groupsToDisplay: [
+ {
+ groupId: '12345',
+ },
+ {
+ groupId: 'abc',
+ },
+ {
+ groupId: '12346',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'new event',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event not configured on dashboard',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'SENDGRID',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ group: '12345',
+ groupsToDisplay: [
+ {
+ groupId: '12345',
+ },
+ {
+ groupId: 'abc',
+ },
+ {
+ groupId: '12346',
+ },
+ ],
+ attachments: [
+ {
+ content: 'YXNkZ2FmZ3FlcmRxZ2Iua2puYWRrbGpuYWtqc2Rmbg==',
+ filename: 'index.html',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ reply_to: {
+ email: 'testing@gmail.com',
+ },
+ attachments: [
+ {
+ content: 'YXNkZ2FmZ3FlcmRxZ2Iua2puYWRrbGpuYWtqc2Rmbg==',
+ filename: 'index.html',
+ },
+ ],
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ asm: {
+ group_id: 12345,
+ groups_to_display: [12345, 12346],
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ group: '12345',
+ groupsToDisplay: [
+ {
+ groupId: '12345',
+ },
+ {
+ groupId: 'abc',
+ },
+ {
+ groupId: '12346',
+ },
+ ],
+ attachments: [
+ {
+ content: 'YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=',
+ filename: 'index.html',
+ },
+ {
+ content: 'bGFqa3NtZGZrZ2hxaWVybmtsYSBmZGtvamx3bWVGTC5NQW5kcy5rbmtmYWtkZg==',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ reply_to: {
+ email: 'testing@gmail.com',
+ },
+ attachments: [
+ {
+ content: 'YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=',
+ filename: 'index.html',
+ },
+ ],
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ asm: {
+ group_id: 12345,
+ groups_to_display: [12345, 12346],
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Track Call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [
+ {
+ event: 'testing',
+ },
+ {
+ event: 'clicked',
+ },
+ ],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ footerText: 'some text',
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ group: '12345',
+ groupsToDisplay: [
+ {
+ groupId: '12345',
+ },
+ {
+ groupId: 'abc',
+ },
+ {
+ groupId: '12346',
+ },
+ ],
+ attachments: [
+ {
+ content: 'YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=',
+ filename: 'index.html',
+ },
+ {
+ content: 'bGFqa3NtZGZrZ2hxaWVybmtsYSBmZGtvamx3bWVGTC5NQW5kcy5rbmtmYWtkZg==',
+ },
+ ],
+ },
+ },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ replyTo: {
+ email: 'testing@gmail.com',
+ },
+ mailSettings: {
+ bypassListManagement: true,
+ footer: true,
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ {
+ name: 'hello',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ from: {
+ email: 'ankit@rudderstack.com',
+ },
+ personalizations: [
+ {
+ to: [
+ {
+ email: 'a@g.com',
+ },
+ ],
+ subject: 'hey there',
+ },
+ ],
+ reply_to: {
+ email: 'testing@gmail.com',
+ },
+ attachments: [
+ {
+ content: 'YXNkZ21hcyxkLm1mO29xd2llbGpmbWwuYWRrbXMuLGFtZHM=',
+ filename: 'index.html',
+ },
+ ],
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ subject: 'A sample subject',
+ asm: {
+ group_id: 12345,
+ groups_to_display: [12345, 12346],
+ },
+ mail_settings: {
+ bypass_list_management: {
+ enable: true,
+ },
+ footer: {
+ enable: true,
+ text: 'some text',
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sendgrid/router/data.ts b/test/integrations/destinations/sendgrid/router/data.ts
new file mode 100644
index 00000000000..e9ef6712267
--- /dev/null
+++ b/test/integrations/destinations/sendgrid/router/data.ts
@@ -0,0 +1,1110 @@
+export const data = [
+ {
+ name: 'sendgrid',
+ description: 'Router Test Case',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [{ event: 'testing' }, { event: 'clicked' }],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ },
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ type: 'track',
+ event: 'testing',
+ properties: {
+ personalizations: [
+ { to: [{ email: 'a@g.com' }, { name: 'hello' }], subject: 'hey there' },
+ ],
+ from: { email: 'ankit@rudderstack.com' },
+ },
+ integrations: { All: true },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ },
+ ],
+ destType: 'sendgrid',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ FORM: {},
+ JSON_ARRAY: {},
+ JSON: {
+ personalizations: [{ to: [{ email: 'a@g.com' }], subject: 'hey there' }],
+ from: { email: 'ankit@rudderstack.com' },
+ reply_to: { email: 'ankit@rudderstack.com' },
+ subject: 'A sample subject',
+ content: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: { Authorization: 'Bearer apikey', 'Content-Type': 'application/json' },
+ version: '1',
+ endpoint: 'https://api.sendgrid.com/v3/mail/send',
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ apiKey: 'apikey',
+ eventNamesSettings: [{ event: 'testing' }, { event: 'clicked' }],
+ subject: 'A sample subject',
+ replyToEmail: 'ankit@rudderstack.com',
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ footer: false,
+ bypassListManagement: false,
+ sandboxMode: false,
+ clickTracking: false,
+ openTracking: false,
+ ganalytics: false,
+ subscriptionTracking: false,
+ clickTrackingEnableText: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: 'sendgrid',
+ description: 'Identify call batching with multiple listIds',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@3',
+ type: 'identify',
+ context: {
+ traits: {
+ age: '30',
+ email: 'user3@rudderlabs.com',
+ phone: '+91 9876543210',
+ city: 'Ahmedabad',
+ state: 'Gujarat',
+ lastName: 'gupta',
+ firstName: 'aman',
+ name: 'aman gupta',
+ },
+ externalId: [
+ {
+ type: 'listIds',
+ id: ['476b736e-24a4-4089-8392-66a6bf6aa14d'],
+ },
+ ],
+ },
+ },
+ metadata: {
+ jobId: 1,
+ },
+ },
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@4',
+ type: 'identify',
+ context: {
+ traits: {
+ email: 'user4@rudderlabs.com',
+ phone: '+91 9876543210',
+ userId: 'sajal',
+ city: 'Bombey',
+ state: 'Maharastra',
+ lastName: 'gupta',
+ username: 'suresh gupta',
+ firstName: 'suresh',
+ },
+ externalId: [
+ {
+ type: 'listIds',
+ id: '737ae8d4-25b4-496e-adff-2fded15fd0c6',
+ },
+ ],
+ },
+ },
+ metadata: {
+ jobId: 2,
+ },
+ },
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@5',
+ type: 'identify',
+ context: {
+ traits: {
+ email: 'user5@rudderlabs.com',
+ phone: '+91 9876543210',
+ city: 'Banglore',
+ lastName: 'bhatt',
+ username: 'kiran bhatt',
+ firstName: 'kiran',
+ },
+ externalId: [
+ {
+ type: 'listIds',
+ id: [
+ '737ae8d4-25b4-496e-adff-2fded15fd0c6',
+ 'a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1',
+ ],
+ },
+ ],
+ },
+ },
+ metadata: {
+ jobId: 3,
+ },
+ },
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@6',
+ type: 'identify',
+ context: {
+ traits: {
+ email: 'user6@rudderlabs.com',
+ phone: '+91 9876543210',
+ city: 'Los Angeles',
+ lastName: 'doe',
+ name: 'john doe',
+ state: 'California',
+ firstName: 'john',
+ },
+ externalId: [
+ {
+ type: 'listIds',
+ id: [
+ 'bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e',
+ 'cb7f13a1-b77b-4fb3-8440-56f6524716d3',
+ ],
+ },
+ ],
+ },
+ },
+ metadata: {
+ jobId: 4,
+ },
+ },
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@7',
+ type: 'identify',
+ context: {
+ traits: {
+ email: 'user7@rudderlabs.com',
+ phone: '+91 9876543210',
+ city: 'Chicago',
+ lastName: 'patel',
+ name: 'reshma patel',
+ state: 'Illinois',
+ firstName: 'reshma',
+ },
+ },
+ },
+ metadata: {
+ jobId: 5,
+ },
+ },
+ {
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ message: {
+ userId: 'user@8',
+ type: 'identify',
+ context: {
+ traits: {
+ email: 'user8@rudderlabs.com',
+ phone: '+91 9876543210',
+ city: 'Chicago',
+ lastName: 'patel',
+ name: 'karishma patel',
+ state: 'Illinois',
+ firstName: 'karishma',
+ },
+ externalId: [
+ {
+ type: 'listIds',
+ id: [
+ '737ae8d4-25b4-496e-adff-2fded15fd0c6',
+ 'a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1',
+ 'bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e',
+ 'cb7f13a1-b77b-4fb3-8440-56f6524716d3',
+ ],
+ },
+ ],
+ },
+ },
+ metadata: {
+ jobId: 6,
+ },
+ },
+ ],
+ destType: 'sendgrid',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ list_ids: ['476b736e-24a4-4089-8392-66a6bf6aa14d'],
+ contacts: [
+ {
+ email: 'user3@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'aman',
+ last_name: 'gupta',
+ unique_name: 'aman gupta',
+ custom_fields: { w1_T: 'aman gupta' },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ list_ids: ['737ae8d4-25b4-496e-adff-2fded15fd0c6'],
+ contacts: [
+ {
+ email: 'user4@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'suresh',
+ last_name: 'gupta',
+ custom_fields: {},
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ list_ids: [
+ '737ae8d4-25b4-496e-adff-2fded15fd0c6',
+ 'a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1',
+ ],
+ contacts: [
+ {
+ email: 'user5@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'kiran',
+ last_name: 'bhatt',
+ custom_fields: {},
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ list_ids: [
+ 'bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e',
+ 'cb7f13a1-b77b-4fb3-8440-56f6524716d3',
+ ],
+ contacts: [
+ {
+ email: 'user6@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'john',
+ last_name: 'doe',
+ unique_name: 'john doe',
+ custom_fields: { w1_T: 'john doe' },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 4 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ contacts: [
+ {
+ email: 'user7@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'reshma',
+ last_name: 'patel',
+ unique_name: 'reshma patel',
+ custom_fields: { w1_T: 'reshma patel' },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 5 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.sendgrid.com/v3/marketing/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer apikey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ list_ids: [
+ '737ae8d4-25b4-496e-adff-2fded15fd0c6',
+ 'a4ac8a69-d8cb-4cf1-9d85-3d60e4007ab1',
+ 'bc9b7ff4-f1d4-4c7c-b9a8-3051107c8d1e',
+ 'cb7f13a1-b77b-4fb3-8440-56f6524716d3',
+ ],
+ contacts: [
+ {
+ email: 'user8@rudderlabs.com',
+ phone_number: '+91 9876543210',
+ first_name: 'karishma',
+ last_name: 'patel',
+ unique_name: 'karishma patel',
+ custom_fields: { w1_T: 'karishma patel' },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 6 }],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ ID: '2HOQOO6wWKaKjeQrEABXgiH6cmU',
+ Config: {
+ IPPoolName: '',
+ apiKey: 'apikey',
+ attachments: [
+ {
+ content: '',
+ contentId: '',
+ disposition: '',
+ filename: '',
+ type: '',
+ },
+ ],
+ clickTracking: true,
+ clickTrackingEnableText: true,
+ contents: [
+ {
+ type: 'text/html',
+ value:
+ 'Hello from Twilio SendGrid!
Sending with the email service trusted by developers and marketers for time-savings, scalability, and delivery expertise.
%open-track%
',
+ },
+ ],
+ customFieldsMapping: [{ from: 'name', to: 'user_name' }],
+ eventDelivery: false,
+ eventDeliveryTS: 1668424218224,
+ eventNamesSettings: [{ event: 'open' }],
+ footer: false,
+ fromEmail: 'a@g.com',
+ fromName: '',
+ ganalytics: false,
+ group: '',
+ groupsToDisplay: [{ groupId: '' }],
+ html: '',
+ mailFromTraits: false,
+ openTracking: false,
+ openTrackingSubstitutionTag: '',
+ replyToEmail: '',
+ replyToName: '',
+ sandboxMode: false,
+ subject: 'hello there from webflow',
+ subscriptionTracking: false,
+ substitutionTag: '',
+ templateId: '',
+ text: '',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sendinblue/network.ts b/test/integrations/destinations/sendinblue/network.ts
new file mode 100644
index 00000000000..f4f7e84fa7b
--- /dev/null
+++ b/test/integrations/destinations/sendinblue/network.ts
@@ -0,0 +1,92 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.sendinblue.com/v3/contacts/gordon_pittman%40example.com',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ email: 'gordon_pittman@example.com',
+ id: 42,
+ emailBlacklisted: false,
+ smsBlacklisted: false,
+ createdAt: '2022-12-04T18:22:48.384+05:30',
+ modifiedAt: '2022-12-18T14:06:20.515+05:30',
+ attributes: {
+ LASTNAME: 'Pittman',
+ FIRSTNAME: 'Gordon',
+ AGE: 33,
+ },
+ listIds: [5],
+ statistics: {},
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.sendinblue.com/v3/contacts/42',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ email: 'gordon_pittman@example.com',
+ id: 42,
+ emailBlacklisted: false,
+ smsBlacklisted: false,
+ createdAt: '2022-12-04T18:22:48.384+05:30',
+ modifiedAt: '2022-12-18T14:06:20.515+05:30',
+ attributes: {
+ LASTNAME: 'Pittman',
+ FIRSTNAME: 'Gordon',
+ AGE: 33,
+ },
+ listIds: [5],
+ statistics: {},
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.sendinblue.com/v3/contacts/john_doe%40example.com',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 404,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/sp_245/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/1234/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.profitwell.com/v2/users/samual/',
+ method: 'GET',
+ },
+ httpRes: {
+ message: 'Request failed with status code 404',
+ status: 404,
+ statusText: 'Not Found',
+ },
+ },
+];
diff --git a/test/integrations/destinations/sendinblue/processor/data.ts b/test/integrations/destinations/sendinblue/processor/data.ts
new file mode 100644
index 00000000000..e50bb9c003c
--- /dev/null
+++ b/test/integrations/destinations/sendinblue/processor/data.ts
@@ -0,0 +1,1722 @@
+export const data = [
+ {
+ name: 'sendinblue',
+ description: 'Page call without email or phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'page',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ name: 'New Page',
+ properties: {
+ url: 'https://www.google.com/',
+ title: 'Google home',
+ },
+ context: {
+ traits: {},
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ path: '/Testing/test/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/test/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'At least one of `email` or `phone` is required',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Page call',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'page',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ name: 'New Page',
+ properties: {
+ url: 'https://www.google.com/',
+ title: 'Google home',
+ },
+ context: {
+ traits: {
+ email: 'john_doe@example.com',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ path: '/Testing/test/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/test/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: false,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ page: 'https://www.google.com/',
+ properties: {
+ ma_path: '/Testing/test/ourSdk.html',
+ ma_referrer: 'http://127.0.0.1:7307/Testing/test/',
+ ma_title: 'Google home',
+ sib_name: 'New Page',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackPage',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track call without email or phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {},
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'At least one of `email` or `phone` is required',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track call without event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ properties: {},
+ context: {},
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event name is required',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track events with sendTraitsInTrack flag set to true',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {},
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ sendTraitsInTrack: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ event: 'Order Completed',
+ eventdata: {},
+ properties: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ SMS: '+919876543210',
+ age: 19,
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackEvent',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track events with contactAttributeMapping provided in webapp',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {},
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [
+ {
+ from: 'location',
+ to: 'LOCATION',
+ },
+ ],
+ sendTraitsInTrack: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ event: 'Order Completed',
+ eventdata: {},
+ properties: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ age: 19,
+ role: 'SDE',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackEvent',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track events with propertiesIdKey provided in integration object',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {
+ orderId: '1341394-3812392190',
+ products: [
+ {
+ product_id: 1234,
+ product_name: 'Track Pants',
+ amount: 1,
+ price: 220,
+ },
+ {
+ product_id: 5768,
+ product_name: 'T-Shirt',
+ amount: 5,
+ price: 1058,
+ },
+ ],
+ },
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ integrations: {
+ All: true,
+ sendinblue: {
+ propertiesIdKey: 'orderId',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [
+ {
+ from: 'location',
+ to: 'LOCATION',
+ },
+ ],
+ sendTraitsInTrack: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ event: 'Order Completed',
+ eventdata: {
+ data: {
+ orderId: '1341394-3812392190',
+ products: [
+ {
+ amount: 1,
+ price: 220,
+ product_id: 1234,
+ product_name: 'Track Pants',
+ },
+ {
+ amount: 5,
+ price: 1058,
+ product_id: 5768,
+ product_name: 'T-Shirt',
+ },
+ ],
+ },
+ id: '1341394-3812392190',
+ },
+ properties: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ age: 19,
+ role: 'SDE',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackEvent',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track events with eventdata.id taken from messageId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {
+ orderId: '1341394-3812392190',
+ products: [
+ {
+ product_id: 1234,
+ product_name: 'Track Pants',
+ amount: 1,
+ price: 220,
+ },
+ {
+ product_id: 5768,
+ product_name: 'T-Shirt',
+ amount: 5,
+ price: 1058,
+ },
+ ],
+ },
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [
+ {
+ from: 'location',
+ to: 'LOCATION',
+ },
+ ],
+ sendTraitsInTrack: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ event: 'Order Completed',
+ eventdata: {
+ data: {
+ orderId: '1341394-3812392190',
+ products: [
+ {
+ amount: 1,
+ price: 220,
+ product_id: 1234,
+ product_name: 'Track Pants',
+ },
+ {
+ amount: 5,
+ price: 1058,
+ product_id: 5768,
+ product_name: 'T-Shirt',
+ },
+ ],
+ },
+ id: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ },
+ properties: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ age: 19,
+ role: 'SDE',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackEvent',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track link without email or phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'trackLink',
+ properties: {
+ link: 'https://www.google.com/gmail/',
+ emailCount: 19,
+ },
+ context: {
+ traits: {},
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'At least one of `email` or `phone` is required',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track link without link',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'trackLink',
+ properties: {},
+ context: {
+ traits: {
+ phone: '+919507545089',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Missing required value from "properties.link"',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Track link',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'trackLink',
+ properties: {
+ link: 'https://www.google.com/gmail/',
+ emailCount: 19,
+ },
+ context: {
+ traits: {
+ phone: '+919507545089',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: '919507545089@mailin-sms.com',
+ link: 'https://www.google.com/gmail/',
+ properties: {
+ emailCount: 19,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackLink',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'ma-key': 'clientKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call with invalid email',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ email: 'abc.com',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The provided email is invalid',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call with invalid phone number',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ phone: '99999999',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'The provided phone number is invalid',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to create or update a contact without email or phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'At least one of `email` or `phone` is required',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to create or update a contact',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ newEmail: 'alex_root@example.com',
+ role: 'SDE',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'sendinblueIncludeListIds',
+ id: [1, 2],
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ sendinblue: {
+ emailBlacklisted: true,
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [
+ {
+ from: 'location',
+ to: 'LOCATION',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ EMAIL: 'alex_root@example.com',
+ age: 19,
+ role: 'SDE',
+ },
+ email: 'john_doe@example.com',
+ emailBlacklisted: true,
+ listIds: [1, 2],
+ updateEnabled: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to create DOI contact with templatedId from externalId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'sendinblueIncludeListIds',
+ id: [1, 2],
+ },
+ {
+ type: 'sendinblueUnlinkListIds',
+ id: [5],
+ },
+ {
+ type: 'sendinblueTemplateId',
+ id: 2,
+ },
+ ],
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ SMS: '+919876543210',
+ age: 19,
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ email: 'john_doe@example.com',
+ includeListIds: [1, 2],
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ templateId: 3,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts/doubleOptinConfirmation',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to create DOI contact without include list Ids',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'sendinblueIncludeListIds is required to create a contact using DOI',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to create DOI contact without template Id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'templateId is required to create a contact using DOI',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to update a DOI contact without an email or contact ID',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'Gordon',
+ lastName: 'Pittman',
+ age: 19,
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'At least one of `email` or `contactId` is required to update the contact using DOI',
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description:
+ 'Identify call to update a DOI contact using contactId as an Identifier and without include list Ids',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ age: 36,
+ location: 'Mumbai',
+ role: 'SDE 2',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'sendinblueContactId',
+ id: 42,
+ },
+ ],
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: {
+ age: 36,
+ location: 'Mumbai',
+ role: 'SDE 2',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts/42',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'PUT',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description:
+ 'Identify call to update a DOI contact using email as an Identifier and without include list Ids',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ age: 36,
+ location: 'Mumbai',
+ role: 'SDE 2',
+ phone: '+918888888888',
+ email: 'gordon_pittman@example.com',
+ newEmail: 'gordon_pittman007@example.com',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'sendinblueIncludeListIds',
+ id: [1],
+ },
+ {
+ type: 'sendinblueUnlinkListIds',
+ id: [2],
+ },
+ ],
+ },
+ integrations: {
+ All: true,
+ sendinblue: {
+ emailBlacklisted: true,
+ smsBlacklisted: false,
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: {
+ age: 36,
+ location: 'Mumbai',
+ role: 'SDE 2',
+ SMS: '+918888888888',
+ EMAIL: 'gordon_pittman007@example.com',
+ },
+ emailBlacklisted: true,
+ smsBlacklisted: false,
+ listIds: [1],
+ unlinkListIds: [2],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts/gordon_pittman%40example.com',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'PUT',
+ params: {},
+ type: 'REST',
+ version: '1',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sendinblue',
+ description: 'Identify call to unlink a contact from given lists',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ email: 'eric_kim@example.com',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'sendinblueUnlinkListIds',
+ id: [2, 5],
+ },
+ ],
+ },
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ emails: ['eric_kim@example.com'],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts/lists/2/contacts/remove',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ body: {
+ FORM: {},
+ JSON: {
+ emails: ['eric_kim@example.com'],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts/lists/5/contacts/remove',
+ files: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ 'api-key': 'apiKey123',
+ },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ userId: '',
+ version: '1',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sendinblue/router/data.ts b/test/integrations/destinations/sendinblue/router/data.ts
new file mode 100644
index 00000000000..ef96b3f55f7
--- /dev/null
+++ b/test/integrations/destinations/sendinblue/router/data.ts
@@ -0,0 +1,320 @@
+export const data = [
+ {
+ name: 'sendinblue',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'track',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ event: 'Order Completed',
+ properties: {
+ orderId: '1341394-3812392190',
+ products: [
+ { product_id: 1234, product_name: 'Track Pants', amount: 1, price: 220 },
+ { product_id: 5768, product_name: 'T-Shirt', amount: 5, price: 1058 },
+ ],
+ },
+ context: {
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [{ from: 'location', to: 'LOCATION' }],
+ sendTraitsInTrack: true,
+ },
+ },
+ },
+ {
+ message: {
+ type: 'page',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ name: 'New Page',
+ properties: { url: 'https://www.google.com/', title: 'Google home' },
+ context: {
+ traits: { email: 'john_doe@example.com' },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ path: '/Testing/test/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/test/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/test/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: false,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ newEmail: 'alex_root@example.com',
+ role: 'SDE',
+ },
+ context: { externalId: [{ type: 'sendinblueIncludeListIds', id: [1, 2] }] },
+ integrations: { All: true, sendinblue: { emailBlacklisted: true } },
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ contactAttributeMapping: [{ from: 'location', to: 'LOCATION' }],
+ },
+ },
+ },
+ {
+ message: {
+ type: 'identify',
+ sentAt: '2021-01-03T17:02:53.195Z',
+ channel: 'web',
+ traits: {
+ first_name: 'John',
+ lastName: 'Doe',
+ age: 19,
+ email: 'john_doe@example.com',
+ phone: '+919876543210',
+ location: 'Mumbai',
+ role: 'SDE',
+ },
+ context: {},
+ rudderId: '8f8fa6b5-8e24-489c-8e22-61f23f2e364f',
+ messageId: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ anonymousId: '97c46c81-3140-456d-b2a9-690d70aaca35',
+ originalTimestamp: '2021-01-03T17:02:53.193Z',
+ },
+ metadata: { jobId: 4, userId: 'u1' },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ destType: 'sendinblue',
+ },
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ event: 'Order Completed',
+ eventdata: {
+ data: {
+ orderId: '1341394-3812392190',
+ products: [
+ { amount: 1, price: 220, product_id: 1234, product_name: 'Track Pants' },
+ { amount: 5, price: 1058, product_id: 5768, product_name: 'T-Shirt' },
+ ],
+ },
+ id: '2116ef8c-efc3-4ca4-851b-02ee60dad6ff',
+ },
+ properties: {
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ age: 19,
+ role: 'SDE',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackEvent',
+ files: {},
+ headers: { 'Content-Type': 'application/json', 'ma-key': 'clientKey123' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ contactAttributeMapping: [{ from: 'location', to: 'LOCATION' }],
+ doi: false,
+ sendTraitsInTrack: true,
+ },
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ email: 'john_doe@example.com',
+ page: 'https://www.google.com/',
+ properties: {
+ ma_path: '/Testing/test/ourSdk.html',
+ ma_referrer: 'http://127.0.0.1:7307/Testing/test/',
+ ma_title: 'Google home',
+ sib_name: 'New Page',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://in-automate.sendinblue.com/api/v2/trackPage',
+ files: {},
+ headers: { 'Content-Type': 'application/json', 'ma-key': 'clientKey123' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ doi: false,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ templateId: 3,
+ },
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ attributes: {
+ EMAIL: 'alex_root@example.com',
+ FIRSTNAME: 'John',
+ LASTNAME: 'Doe',
+ LOCATION: 'Mumbai',
+ SMS: '+919876543210',
+ age: 19,
+ role: 'SDE',
+ },
+ email: 'john_doe@example.com',
+ emailBlacklisted: true,
+ listIds: [1, 2],
+ updateEnabled: true,
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://api.sendinblue.com/v3/contacts',
+ files: {},
+ headers: { 'Content-Type': 'application/json', 'api-key': 'apiKey123' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ contactAttributeMapping: [{ from: 'location', to: 'LOCATION' }],
+ doi: false,
+ },
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ batched: false,
+ error: 'sendinblueIncludeListIds is required to create a contact using DOI',
+ metadata: [{ jobId: 4, userId: 'u1' }],
+ statTags: {
+ destType: 'SENDINBLUE',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ destination: {
+ Config: {
+ apiKey: 'apiKey123',
+ clientKey: 'clientKey123',
+ templateId: 3,
+ doi: true,
+ redirectionUrl: 'https://app.sendinblue.com/marketing-dashboard',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/serenytics/router/data.ts b/test/integrations/destinations/serenytics/router/data.ts
index 2edbe58257c..1e0226eab0b 100644
--- a/test/integrations/destinations/serenytics/router/data.ts
+++ b/test/integrations/destinations/serenytics/router/data.ts
@@ -26,24 +26,15 @@ export const data = [
'https://api.serenytics.com/api/data_source/5dc8508e-0946-47fc-8ed8-f67307c407f1/push/997877c6358621beb1f86dc320ac822b9f069760',
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
event: 'New Alert',
type: 'track',
sentAt: '2021-01-03T17:02:53.195Z',
channel: 'web',
- properties: {
- message: 'Please check the alert',
- brand: 'Zara',
- price: '12000',
- },
+ properties: { message: 'Please check the alert', brand: 'Zara', price: '12000' },
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -51,13 +42,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -108,11 +94,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -178,24 +160,15 @@ export const data = [
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
event: 'Order Completed',
type: 'track',
sentAt: '2021-01-03T17:02:53.195Z',
channel: 'web',
- properties: {
- message: 'Please check the alert',
- brand: 'Zara',
- price: '12000',
- },
+ properties: { message: 'Please check the alert', brand: 'Zara', price: '12000' },
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -203,13 +176,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -312,11 +280,7 @@ export const data = [
files: {},
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -396,9 +360,7 @@ export const data = [
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
originalTimestamp: '2022-06-22T10:57:58Z',
@@ -419,18 +381,10 @@ export const data = [
type: 'ios',
attTrackingStatus: 3,
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
locale: 'en-US',
- os: {
- name: 'iOS',
- version: '14.4.1',
- },
- screen: {
- density: 2,
- },
+ os: { name: 'iOS', version: '14.4.1' },
+ screen: { density: 2 },
},
traits: {
email: 'testuser@google.com',
@@ -485,11 +439,7 @@ export const data = [
endpoint:
'https://api.serenytics.com/api/data_source/5dc8508e-0946-47fc-8ed8-f67307c407f1/push/997877c6358621beb1f86dc320ac822b9f069760',
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/sfmc/network.ts b/test/integrations/destinations/sfmc/network.ts
new file mode 100644
index 00000000000..7564d8c6d53
--- /dev/null
+++ b/test/integrations/destinations/sfmc/network.ts
@@ -0,0 +1,14 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://vcn7AQ2W9GGIAZSsN6Mfq.auth.marketingcloudapis.com/v2/token',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ access_token: 'yourAuthToken',
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sfmc/processor/data.ts b/test/integrations/destinations/sfmc/processor/data.ts
new file mode 100644
index 00000000000..b2839908ad6
--- /dev/null
+++ b/test/integrations/destinations/sfmc/processor/data.ts
@@ -0,0 +1,1897 @@
+export const data = [
+ {
+ name: 'sfmc',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: true,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Creating or updating contacts is disabled. To enable this feature set "Do Not Create or Update Contacts" to false',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributeSets: [],
+ contactKey: '12345',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'PUT',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ values: {
+ 'Contact Key': '12345',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'App Version': '1.0.0',
+ 'App Build': '1.0.0',
+ 'UTM Campaign': 'Demo Campaign',
+ 'UTM Source': 'facebook',
+ 'UTM Medium': 'online',
+ 'UTM Term': 'Demo terms',
+ 'UTM Content': 'Demo content',
+ Locale: 'en-GB',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'IP Address': '0.0.0.0',
+ 'Screen Density': 2,
+ 'Screen Height': 860,
+ 'Screen Width': 1280,
+ Email: 'tonmoy@rudderstack.com',
+ Name: 'Tonmoy Labs',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either userId or email is required',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ userId: 12345,
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type is required',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'revenue',
+ userId: 12345,
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event type revenue is not supported',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ device: {
+ adTrackingEnabled: true,
+ type: 'iOS',
+ manufacturer: 'Apple',
+ model: 'iPhone XR',
+ name: 'Apple iPhone XR',
+ },
+ network: {
+ bluetooth: 'off',
+ wifi: 'connceted',
+ cellular: 'active',
+ carrier: 'Verizon',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'POST',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributeSets: [],
+ contactKey: '12345',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ userId: '',
+ method: 'PUT',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ values: {
+ Name: 'Tonmoy Labs',
+ Email: 'tonmoy@rudderstack.com',
+ Locale: 'en-GB',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'UTM Term': 'Demo terms',
+ 'App Build': '1.0.0',
+ 'IP Address': '0.0.0.0',
+ 'UTM Medium': 'online',
+ 'UTM Source': 'facebook',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'App Version': '1.0.0',
+ 'Contact Key': '12345',
+ 'Device Name': 'Apple iPhone XR',
+ 'Device Type': 'iOS',
+ 'UTM Content': 'Demo content',
+ 'Device-model': 'iPhone XR',
+ 'Screen Width': 1280,
+ 'UTM Campaign': 'Demo Campaign',
+ 'Wifi Enabled': 'connceted',
+ 'Screen Height': 860,
+ 'Screen Density': 2,
+ 'Network Carrier': 'Verizon',
+ 'Cellular Enabled': 'active',
+ 'Bluetooth Enabled': 'off',
+ 'Ad Tracking Enabled': true,
+ 'Device Manufacturer': 'Apple',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Event Name',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ properties: {
+ Plan: 'plan value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: '',
+ uuid: false,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Contact Key:12345',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ values: {
+ Plan: 'plan value',
+ Locale: 'en-GB',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'UTM Term': 'Demo terms',
+ 'App Build': '1.0.0',
+ 'IP Address': '0.0.0.0',
+ 'UTM Medium': 'online',
+ 'UTM Source': 'facebook',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'App Version': '1.0.0',
+ 'Contact Key': '12345',
+ 'UTM Content': 'Demo content',
+ 'Screen Width': 1280,
+ 'UTM Campaign': 'Demo Campaign',
+ 'Screen Height': 860,
+ 'Screen Density': 2,
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Event Name',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ device: {
+ adTrackingEnabled: true,
+ type: 'iOS',
+ manufacturer: 'Apple',
+ model: 'iPhone XR',
+ name: 'Apple iPhone XR',
+ },
+ network: {
+ bluetooth: 'off',
+ wifi: 'connceted',
+ cellular: 'active',
+ carrier: 'Verizon',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ properties: {
+ Plan: 'plan value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ values: {
+ Plan: 'plan value',
+ Uuid: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ Locale: 'en-GB',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'UTM Term': 'Demo terms',
+ 'App Build': '1.0.0',
+ 'IP Address': '0.0.0.0',
+ 'UTM Medium': 'online',
+ 'UTM Source': 'facebook',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'App Version': '1.0.0',
+ 'Device Name': 'Apple iPhone XR',
+ 'Device Type': 'iOS',
+ 'UTM Content': 'Demo content',
+ 'Device-model': 'iPhone XR',
+ 'Screen Width': 1280,
+ 'UTM Campaign': 'Demo Campaign',
+ 'Wifi Enabled': 'connceted',
+ 'Screen Height': 860,
+ 'Screen Density': 2,
+ 'Network Carrier': 'Verizon',
+ 'Cellular Enabled': 'active',
+ 'Bluetooth Enabled': 'off',
+ 'Ad Tracking Enabled': true,
+ 'Device Manufacturer': 'Apple',
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ version: '1',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Uuid:50360b9c-ea8d-409c-b672-c9230f91cce5',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Purchase Event',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ device: {
+ adTrackingEnabled: true,
+ type: 'iOS',
+ manufacturer: 'Apple',
+ model: 'iPhone XR',
+ name: 'Apple iPhone XR',
+ },
+ network: {
+ bluetooth: 'off',
+ wifi: 'connceted',
+ cellular: 'active',
+ carrier: 'Verizon',
+ },
+ traits: {
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ properties: {
+ Plan: 'plan value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event not mapped for this track call',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Event Name',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ device: {
+ adTrackingEnabled: true,
+ type: 'iOS',
+ manufacturer: 'Apple',
+ model: 'iPhone XR',
+ name: 'Apple iPhone XR',
+ },
+ network: {
+ bluetooth: 'off',
+ wifi: 'connceted',
+ cellular: 'active',
+ carrier: 'Verizon',
+ },
+ traits: {
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ properties: {
+ Plan: 'plan value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Either userId or email is required',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Watch',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ properties: {
+ Plan: 'plan value',
+ 'Price Key': 29.99,
+ 'Guest Key': '2323-34343-3434',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ {
+ from: 'Watch',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'User Key',
+ },
+ {
+ from: 'watch',
+ to: 'Guest Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ values: {
+ Plan: 'plan value',
+ Locale: 'en-GB',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'UTM Term': 'Demo terms',
+ 'App Build': '1.0.0',
+ 'Price Key': 29.99,
+ 'Guest Key': '2323-34343-3434',
+ 'IP Address': '0.0.0.0',
+ 'UTM Medium': 'online',
+ 'UTM Source': 'facebook',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'App Version': '1.0.0',
+ 'UTM Content': 'Demo content',
+ 'Screen Width': 1280,
+ 'UTM Campaign': 'Demo Campaign',
+ 'Screen Height': 860,
+ 'Screen Density': 2,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ version: '1',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Guest Key:2323-34343-3434',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'Watch',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ properties: {
+ Plan: 'plan value',
+ 'Price Key': 29.99,
+ 'Contact Key': 12345,
+ 'Guest Key': '2323-34343-3434',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ {
+ from: 'Watch',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'User Key',
+ },
+ {
+ from: 'watch',
+ to: 'Guest Key, Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ values: {
+ Plan: 'plan value',
+ Locale: 'en-GB',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'UTM Term': 'Demo terms',
+ 'App Build': '1.0.0',
+ 'Price Key': 29.99,
+ 'Contact Key': 12345,
+ 'Guest Key': '2323-34343-3434',
+ 'IP Address': '0.0.0.0',
+ 'UTM Medium': 'online',
+ 'UTM Source': 'facebook',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'App Version': '1.0.0',
+ 'UTM Content': 'Demo content',
+ 'Screen Width': 1280,
+ 'UTM Campaign': 'Demo Campaign',
+ 'Screen Height': 860,
+ 'Screen Density': 2,
+ },
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'PUT',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ version: '1',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:C500FD37-155C-49BD-A21B-AFCEF3D1A9CB/rows/Guest Key:2323-34343-3434,Contact Key:12345',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sfmc',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'message event',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'track',
+ userId: '12345',
+ properties: {
+ id: 'id101',
+ contactId: 'cid101',
+ email: 'testemail@gmail.com',
+ accountNumber: '99110099',
+ patronName: 'SP',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToExternalKey: [
+ {
+ from: 'Event Name',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ {
+ from: 'Watch',
+ to: 'C500FD37-155C-49BD-A21B-AFCEF3D1A9CB',
+ },
+ ],
+ eventToPrimaryKey: [
+ {
+ from: 'userId',
+ to: 'User Key',
+ },
+ {
+ from: 'watch',
+ to: 'Guest Key, Contact Key',
+ },
+ ],
+ eventToUUID: [
+ {
+ event: 'Event Name',
+ uuid: true,
+ },
+ ],
+ eventToDefinitionMapping: [
+ {
+ from: 'message event',
+ to: 'test-event-definition',
+ },
+ ],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ JSON: {
+ ContactKey: 'cid101',
+ Data: {
+ accountNumber: '99110099',
+ email: 'testemail@gmail.com',
+ id: 'id101',
+ patronName: 'SP',
+ },
+ EventDefinitionKey: 'test-event-definition',
+ },
+ },
+ type: 'REST',
+ files: {},
+ method: 'POST',
+ params: {},
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ version: '1',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/interaction/v1/events',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sfmc/router/data.ts b/test/integrations/destinations/sfmc/router/data.ts
new file mode 100644
index 00000000000..7707e709f43
--- /dev/null
+++ b/test/integrations/destinations/sfmc/router/data.ts
@@ -0,0 +1,338 @@
+export const data = [
+ {
+ name: 'sfmc',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ metadata: {
+ jobId: 1,
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: true,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ {
+ message: {
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ campaign: {
+ name: 'Demo Campaign',
+ source: 'facebook',
+ medium: 'online',
+ term: 'Demo terms',
+ content: 'Demo content',
+ },
+ traits: {
+ email: 'tonmoy@rudderstack.com',
+ name: 'Tonmoy Labs',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-GB',
+ ip: '0.0.0.0',
+ screen: {
+ density: 2,
+ height: 860,
+ width: 1280,
+ },
+ },
+ type: 'identify',
+ messageId: '50360b9c-ea8d-409c-b672-c9230f91cce5',
+ originalTimestamp: '2019-10-15T09:35:31.288Z',
+ userId: '12345',
+ userProperties: {
+ test_key: 'test value',
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ integrations: {
+ All: true,
+ },
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ destType: 'sfmc',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: true,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: true,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ batched: false,
+ statusCode: 400,
+ error:
+ 'Creating or updating contacts is disabled. To enable this feature set "Do Not Create or Update Contacts" to false',
+ statTags: {
+ destType: 'SFMC',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/contacts/v1/contacts',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ attributeSets: [],
+ contactKey: '12345',
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint:
+ 'https://vcn7AQ2W9GGIAZSsN6Mfq.rest.marketingcloudapis.com/hub/v1/dataevents/key:f3ffa19b-e0b3-4967-829f-549b781080e6/rows/Contact Key:12345',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer yourAuthToken',
+ },
+ params: {},
+ body: {
+ JSON: {
+ values: {
+ 'Contact Key': '12345',
+ 'App Name': 'RudderLabs JavaScript SDK',
+ 'App Version': '1.0.0',
+ 'App Build': '1.0.0',
+ 'UTM Campaign': 'Demo Campaign',
+ 'UTM Source': 'facebook',
+ 'UTM Medium': 'online',
+ 'UTM Term': 'Demo terms',
+ 'UTM Content': 'Demo content',
+ Locale: 'en-GB',
+ 'User Agent':
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ 'IP Address': '0.0.0.0',
+ 'Screen Density': 2,
+ 'Screen Height': 860,
+ 'Screen Width': 1280,
+ Email: 'tonmoy@rudderstack.com',
+ Name: 'Tonmoy Labs',
+ },
+ },
+ XML: {},
+ JSON_ARRAY: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 2,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq',
+ Name: 'SFMC',
+ DestinationDefinition: {
+ ID: '1pYpYSeQd8OeN6xPdw6VGDzqUd1',
+ Name: 'SFMC',
+ DisplayName: 'Salesforce Marketing Cloud',
+ Config: {
+ destConfig: [],
+ excludeKeys: [],
+ includeKeys: [],
+ saveDestinationResponse: false,
+ supportedSourceTypes: [],
+ transformAt: 'processor',
+ },
+ ResponseRules: {},
+ },
+ Config: {
+ clientId: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ clientSecret: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ createOrUpdateContacts: false,
+ eventDelivery: true,
+ eventDeliveryTS: 1615371070621,
+ eventToUUID: [],
+ externalKey: 'f3ffa19b-e0b3-4967-829f-549b781080e6',
+ subDomain: 'vcn7AQ2W9GGIAZSsN6Mfq',
+ },
+ Enabled: true,
+ Transformations: [],
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/signl4/router/data.ts b/test/integrations/destinations/signl4/router/data.ts
index 582c02e26d8..0fcf55d0465 100644
--- a/test/integrations/destinations/signl4/router/data.ts
+++ b/test/integrations/destinations/signl4/router/data.ts
@@ -27,24 +27,15 @@ export const data = [
eventToTitleMapping: [],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
event: 'New Alert',
type: 'track',
sentAt: '2021-01-03T17:02:53.195Z',
channel: 'web',
- properties: {
- message: 'Please check the alert',
- brand: 'Zara',
- price: '12000',
- },
+ properties: { message: 'Please check the alert', brand: 'Zara', price: '12000' },
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -52,13 +43,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -86,9 +72,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://connect.signl4.com/webhook/dummyApiKey',
- headers: {
- 'Content-Type': 'application/json',
- },
+ headers: { 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -108,11 +92,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -163,32 +143,18 @@ export const data = [
s4StatusValue: 'new',
s4StatusProperty: '',
s4Filter: false,
- eventToTitleMapping: [
- {
- from: 'New Alert',
- to: 'Alert Created',
- },
- ],
+ eventToTitleMapping: [{ from: 'New Alert', to: 'Alert Created' }],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
event: 'New Alert',
type: 'identify',
sentAt: '2021-01-03T17:02:53.195Z',
channel: 'web',
- properties: {
- message: 'Please check the alert',
- brand: 'Zara',
- price: '12000',
- },
+ properties: { message: 'Please check the alert', brand: 'Zara', price: '12000' },
context: {
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
app: {
name: 'RudderLabs JavaScript SDK',
build: '1.0.0',
@@ -196,13 +162,8 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
},
locale: 'en-US',
- screen: {
- density: 2,
- },
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.11',
- },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
campaign: {},
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
@@ -239,19 +200,10 @@ export const data = [
s4StatusValue: 'new',
s4StatusProperty: '',
s4Filter: false,
- eventToTitleMapping: [
- {
- from: 'New Alert',
- to: 'Alert Created',
- },
- ],
+ eventToTitleMapping: [{ from: 'New Alert', to: 'Alert Created' }],
},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
statTags: {
errorCategory: 'dataValidation',
destType: 'SIGNL4',
diff --git a/test/integrations/destinations/singular/router/data.ts b/test/integrations/destinations/singular/router/data.ts
index d9c9f7a8cb3..9074ef2fdc8 100644
--- a/test/integrations/destinations/singular/router/data.ts
+++ b/test/integrations/destinations/singular/router/data.ts
@@ -14,21 +14,13 @@ export const data = [
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
type: 'track',
event: 'mysessionevent',
@@ -52,32 +44,17 @@ export const data = [
adTrackingEnabled: 'true',
token: 'testDeviceToken',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '0.1.4',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '0.1.4' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
campaign: {
source: 'google',
medium: 'medium',
term: 'keyword',
content: 'some content',
},
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Mumbai',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
@@ -93,7 +70,7 @@ export const data = [
receipt_signature: '1234dfghnh',
referring_application: '2134dfg',
total: 20,
- revenue: 15.0,
+ revenue: 15,
shipping: 22,
tax: 1,
discount: 1.5,
@@ -112,13 +89,7 @@ export const data = [
url: 'https://www.website.com/product/path',
image_url: 'https://www.website.com/product/path.jpg',
},
- {
- sku: 'F-32',
- name: 'UNO',
- price: 3.45,
- quantity: 2,
- category: 'Games',
- },
+ { sku: 'F-32', name: 'UNO', price: 3.45, quantity: 2, category: 'Games' },
],
},
timestamp: '2021-09-01T15:46:51.000Z',
@@ -171,34 +142,19 @@ export const data = [
c: 'wifi',
a: 'dummyApiKey',
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
@@ -223,21 +179,13 @@ export const data = [
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
type: 'track',
event: 'mysessionevent',
@@ -261,32 +209,17 @@ export const data = [
adTrackingEnabled: 'true',
token: 'testDeviceToken',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '0.1.4',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '0.1.4' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
campaign: {
source: 'google',
medium: 'medium',
term: 'keyword',
content: 'some content',
},
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Mumbai',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
@@ -302,7 +235,7 @@ export const data = [
receipt_signature: '1234dfghnh',
referring_application: '2134dfg',
total: 20,
- revenue: 15.0,
+ revenue: 15,
shipping: 22,
tax: 1,
discount: 1.5,
@@ -321,13 +254,7 @@ export const data = [
url: 'https://www.website.com/product/path',
image_url: 'https://www.website.com/product/path.jpg',
},
- {
- sku: 'F-32',
- name: 'UNO',
- price: 3.45,
- quantity: 2,
- category: 'Games',
- },
+ { sku: 'F-32', name: 'UNO', price: 3.45, quantity: 2, category: 'Games' },
],
},
timestamp: '2021-09-01T15:46:51.000Z',
@@ -380,34 +307,19 @@ export const data = [
c: 'wifi',
a: 'dummyApiKey',
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
@@ -432,21 +344,13 @@ export const data = [
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
type: 'track',
event: 'mysessionevent',
@@ -470,32 +374,17 @@ export const data = [
adTrackingEnabled: 'true',
token: 'testDeviceToken',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '0.1.4',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '0.1.4' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
campaign: {
source: 'google',
medium: 'medium',
term: 'keyword',
content: 'some content',
},
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Mumbai',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; Android SDK built for x86 Build/PSR1.180720.075)',
@@ -511,7 +400,7 @@ export const data = [
receipt_signature: '1234dfghnh',
referring_application: '2134dfg',
total: 20,
- revenue: 15.0,
+ revenue: 15,
shipping: 22,
tax: 1,
discount: 1.5,
@@ -530,13 +419,7 @@ export const data = [
url: 'https://www.website.com/product/path',
image_url: 'https://www.website.com/product/path.jpg',
},
- {
- sku: 'F-32',
- name: 'UNO',
- price: 3.45,
- quantity: 2,
- category: 'Games',
- },
+ { sku: 'F-32', name: 'UNO', price: 3.45, quantity: 2, category: 'Games' },
],
},
timestamp: '2021-09-01T15:46:51.000Z',
@@ -589,34 +472,19 @@ export const data = [
c: 'wifi',
a: 'dummyApiKey',
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
apiKey: 'dummyApiKey',
sessionEventList: [
- {
- sessionEventName: 'mysessionevent',
- },
- {
- sessionEventName: 'randomuser',
- },
- {
- sessionEventName: 'titanium',
- },
+ { sessionEventName: 'mysessionevent' },
+ { sessionEventName: 'randomuser' },
+ { sessionEventName: 'titanium' },
],
},
},
@@ -644,15 +512,8 @@ export const data = [
userId: '68e214f1-ac84-4241-b27d-78a18f59f21e',
channel: 'mobile',
context: {
- os: {
- name: 'iOS',
- version: '16.2',
- },
- app: {
- build: '5013',
- version: '0.5.13',
- namespace: 'com.yabimoney',
- },
+ os: { name: 'iOS', version: '16.2' },
+ app: { build: '5013', version: '0.5.13', namespace: 'com.yabimoney' },
device: {
id: 'cc06ff5e-838b-4e33-9d90-4ab5a6068bec',
name: 'iPhone',
@@ -664,11 +525,7 @@ export const data = [
attTrackingStatus: 0,
},
locale: 'en-AE',
- screen: {
- width: 844,
- height: 390,
- density: 3,
- },
+ screen: { width: 844, height: 390, density: 3 },
traits: {
phone: '',
userId: '68e214f1-ac84-4241-b27d-78a18f59f21e',
@@ -677,15 +534,8 @@ export const data = [
yabi_user_id: 'uCh5IS8p',
subscription_type: '',
},
- library: {
- name: 'rudder-ios-library',
- version: '1.8.0',
- },
- network: {
- wifi: true,
- carrier: 'etisalat',
- cellular: false,
- },
+ library: { name: 'rudder-ios-library', version: '1.8.0' },
+ network: { wifi: true, carrier: 'etisalat', cellular: false },
timezone: 'Asia/Dubai',
sessionId: 1674138119,
},
@@ -695,9 +545,7 @@ export const data = [
receivedAt: '2023-01-19T14:25:25.465Z',
request_ip: '87.201.98.151',
anonymousId: 'cc06ff5e-838b-4e33-9d90-4ab5a6068bec',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
originalTimestamp: '2023-01-19T14:25:06.301Z',
},
destination: {
@@ -705,29 +553,14 @@ export const data = [
Config: {
apiKey: 'apiKey',
apiSecret: 'dummyApiSecret',
- sessionEventList: [
- {
- sessionEventName: 'test_event',
- },
- ],
- blacklistedEvents: [
- {
- eventName: '',
- },
- ],
- whitelistedEvents: [
- {
- eventName: '',
- },
- ],
+ sessionEventList: [{ sessionEventName: 'test_event' }],
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
eventFilteringOption: 'whitelistedEvents',
eventDelivery: false,
eventDeliveryTS: 1663919255086,
},
- liveEventsConfig: {
- eventDelivery: false,
- eventDeliveryTS: 1663919255086,
- },
+ liveEventsConfig: { eventDelivery: false, eventDeliveryTS: 1663919255086 },
ID: '2EhlBrBduwN2NX4pJ7nrVDHAz6C',
workspaceId: '1sUXvPs0hYgjBxSfjG4gqnRFNoP',
DestinationDefinition: {
@@ -821,6 +654,7 @@ export const data = [
eventType: 'track',
sourceDefinitionId: '1TW48i2bIzEl1HPf825cEznfIM8',
destinationDefinitionId: '',
+ userId: 'u1',
},
},
],
@@ -856,12 +690,7 @@ export const data = [
a: 'apiKey',
e: {},
},
- body: {
- JSON: {},
- JSON_ARRAY: {},
- XML: {},
- FORM: {},
- },
+ body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} },
files: {},
},
metadata: [
@@ -895,6 +724,7 @@ export const data = [
eventType: 'track',
sourceDefinitionId: '1TW48i2bIzEl1HPf825cEznfIM8',
destinationDefinitionId: '',
+ userId: 'u1',
},
],
batched: false,
@@ -904,29 +734,14 @@ export const data = [
Config: {
apiKey: 'apiKey',
apiSecret: 'dummyApiSecret',
- sessionEventList: [
- {
- sessionEventName: 'test_event',
- },
- ],
- blacklistedEvents: [
- {
- eventName: '',
- },
- ],
- whitelistedEvents: [
- {
- eventName: '',
- },
- ],
+ sessionEventList: [{ sessionEventName: 'test_event' }],
+ blacklistedEvents: [{ eventName: '' }],
+ whitelistedEvents: [{ eventName: '' }],
eventFilteringOption: 'whitelistedEvents',
eventDelivery: false,
eventDeliveryTS: 1663919255086,
},
- liveEventsConfig: {
- eventDelivery: false,
- eventDeliveryTS: 1663919255086,
- },
+ liveEventsConfig: { eventDelivery: false, eventDeliveryTS: 1663919255086 },
ID: '2EhlBrBduwN2NX4pJ7nrVDHAz6C',
workspaceId: '1sUXvPs0hYgjBxSfjG4gqnRFNoP',
DestinationDefinition: {
diff --git a/test/integrations/destinations/slack/processor/data.ts b/test/integrations/destinations/slack/processor/data.ts
index be05a13ab5b..7deb555fa93 100644
--- a/test/integrations/destinations/slack/processor/data.ts
+++ b/test/integrations/destinations/slack/processor/data.ts
@@ -1,1982 +1,2020 @@
export const data = [
- {
- "name": "slack",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "originalTimestamp": "2020-03-23T03:46:30.916Z",
- "properties": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "receivedAt": "2020-03-23T09:16:31.041+05:30",
- "request_ip": "[::1]:52056",
- "sentAt": "2020-03-23T03:46:30.916Z",
- "timestamp": "2020-03-23T09:16:31.041+05:30",
- "type": "identify",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 126,
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"Identified my-namehiji: hulala \",\"username\":\"RudderStack\",\"icon_url\":\"https://cdn.rudderlabs.com/rudderstack.png\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 126,
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "originalTimestamp": "2020-03-23T03:46:30.916Z",
- "properties": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "receivedAt": "2020-03-23T09:16:31.041+05:30",
- "request_ip": "[::1]:52056",
- "sentAt": "2020-03-23T03:46:30.916Z",
- "timestamp": "2020-03-23T09:16:31.041+05:30",
- "type": "page",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 126,
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "anonymousId": "4de817fb-7f8e-4e23-b9be-f6736dbda20f",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 126,
- "messageId": "9ecc0183-89ed-48bd-87eb-b2d8e1ca6780",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 400,
- "error": "Event type page is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SLACK",
- "module": "destination",
- "implementation": "native",
- "feature": "processor",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL"
- }
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "12345",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "",
- "referrer": "",
- "search": "",
- "title": "",
- "url": ""
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "traits": {
- "country": "USA",
- "email": "test@domain.com",
- "hiji": "hulala-1",
- "name": "my-name-1"
- },
- "integrations": {
- "All": true
- },
- "messageId": "4aaecff2-a513-4bbf-9824-c471f4ac9777",
- "originalTimestamp": "2020-03-23T03:41:46.122Z",
- "receivedAt": "2020-03-23T09:11:46.244+05:30",
- "request_ip": "[::1]:52055",
- "sentAt": "2020-03-23T03:41:46.123Z",
- "timestamp": "2020-03-23T09:11:46.243+05:30",
- "type": "identify",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "12345",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 123,
- "messageId": "4aaecff2-a513-4bbf-9824-c471f4ac9777",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"identified my-name-1 with hiji: hulala-1 \",\"username\":\"RudderStack\",\"icon_url\":\"https://cdn.rudderlabs.com/rudderstack.png\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "12345",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 123,
- "messageId": "4aaecff2-a513-4bbf-9824-c471f4ac9777",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "incomingWebhooksType": "modern",
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/demo",
- "eventName": "is",
- "eventRegex": true
- },
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example+1",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}} and traits {{traitsList.hiji}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_isent1",
- "integrations": {
- "All": true
- },
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "originalTimestamp": "2020-03-23T03:46:30.921Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52057",
- "sentAt": "2020-03-23T03:46:30.921Z",
- "timestamp": "2020-03-23T09:16:31.064+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/id1/id2/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"my-name performed test_isent1 with test_val1 test_val2 and traits hulala\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "incomingWebhooksType": "modern",
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example",
- "eventName": "is",
- "eventChannel": "example_channel",
- "eventRegex": true
- },
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example+1",
- "eventName": "is",
- "eventChannel": "example_channel",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_eventing_testis",
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/id1/id2/example",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"my-name performed test_eventing_testis with test_val1 test_val2\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "incomingWebhooksType": "modern",
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example",
- "eventName": "test_eventing_test",
- "eventChannel": "example_channel",
- "eventRegex": false
- },
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example+1",
- "eventName": "",
- "eventChannel": "example_channel",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_eventing_test",
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/id1/id2/example",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"my-name did test_eventing_test\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "incomingWebhooksType": "legacy",
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/demo",
- "eventName": "is",
- "eventRegex": true
- },
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example+1",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}} and traits {{traitsList.hiji}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_isent1",
- "integrations": {
- "All": true
- },
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "originalTimestamp": "2020-03-23T03:46:30.921Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52057",
- "sentAt": "2020-03-23T03:46:30.921Z",
- "timestamp": "2020-03-23T09:16:31.064+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"my-name performed test_isent1 with test_val1 test_val2 and traits hulala\",\"username\":\"RudderStack\",\"icon_url\":\"https://cdn.rudderlabs.com/rudderstack.png\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "incomingWebhooksType": "legacy",
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example",
- "eventName": "is",
- "eventRegex": true
- },
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/id1/id2/example+1",
- "eventChannel": "example-of-legacy",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ],
- "denyListOfEvents": [
- {
- "eventName": "black_event"
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_eventing_testis",
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"channel\":\"example-of-legacy\",\"text\":\"my-name performed test_eventing_testis with test_val1 test_val2\",\"username\":\"RudderStack\",\"icon_url\":\"https://cdn.rudderlabs.com/rudderstack.png\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_eventing_testis",
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 400,
- "error": "Event type is required",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SLACK",
- "module": "destination",
- "implementation": "native",
- "feature": "processor",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL"
- }
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 400,
- "error": "Event name is required",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SLACK",
- "module": "destination",
- "implementation": "native",
- "feature": "processor",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL"
- }
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties. key1}} {{properties.key2}} and traits {{traitsList.hiji}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "identifyTemplate": "identified {{name}} with {{traits}}",
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {
- "app": {
- "build": "1.0.0",
- "name": "RudderLabs JavaScript SDK",
- "namespace": "com.rudderlabs.javascript",
- "version": "1.1.1-rc.1"
- },
- "ip": "0.0.0.0",
- "library": {
- "name": "RudderLabs JavaScript SDK",
- "version": "1.1.1-rc.1"
- },
- "locale": "en-US",
- "os": {
- "name": "",
- "version": ""
- },
- "page": {
- "path": "/tests/html/script-test.html",
- "referrer": "http://localhost:1111/tests/html/",
- "search": "",
- "title": "",
- "url": "http://localhost:1111/tests/html/script-test.html"
- },
- "screen": {
- "density": 1.7999999523162842
- },
- "traits": {
- "country": "India",
- "email": "name@domain.com",
- "hiji": "hulala",
- "name": "my-name"
- },
- "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
- },
- "event": "test_isent1",
- "integrations": {
- "All": true
- },
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "originalTimestamp": "2020-03-23T03:46:30.921Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52057",
- "sentAt": "2020-03-23T03:46:30.921Z",
- "timestamp": "2020-03-23T09:16:31.064+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 128,
- "messageId": "78102118-56ac-4c5a-a495-8cd7c8f71cc2",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 400,
- "error": "Something is wrong with the event template: '{{name}} performed {{event}} with {{properties. key1}} {{properties.key2}} and traits {{traitsList.hiji}}'",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "SLACK",
- "module": "destination",
- "implementation": "native",
- "feature": "processor",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL"
- }
- }
- ]
- }
- }
- },
- {
- "name": "slack",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "ID": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "Name": "test-slack",
- "DestinationDefinition": {
- "ID": "1ZQUiJVMlmF7lfsdfXg7KXQnlLV",
- "Name": "SLACK",
- "DisplayName": "Slack",
- "Config": {
- "excludeKeys": [],
- "includeKeys": []
- }
- },
- "Config": {
- "eventChannelSettings": [
- {
- "eventChannelWebhook": "https://hooks.slack.com/services/example/test/demo",
- "eventName": "is",
- "eventRegex": true
- }
- ],
- "eventTemplateSettings": [
- {
- "eventName": "is",
- "eventRegex": true,
- "eventTemplate": "{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}"
- },
- {
- "eventName": "",
- "eventRegex": false,
- "eventTemplate": ""
- }
- ],
- "webhookUrl": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "whitelistedTraitsSettings": [
- {
- "trait": "hiji"
- },
- {
- "trait": ""
- }
- ]
- },
- "Enabled": true,
- "Transformations": [],
- "IsProcessorEnabled": true
- },
- "message": {
- "anonymousId": "00000000000000000000000000",
- "channel": "web",
- "context": {},
- "event": "black_event",
- "integrations": {
- "All": true
- },
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "originalTimestamp": "2020-03-23T03:46:30.922Z",
- "properties": {
- "currency": "USD",
- "key1": "test_val1",
- "key2": "test_val2",
- "revenue": 30,
- "user_actual_id": 12345
- },
- "receivedAt": "2020-03-23T09:16:31.064+05:30",
- "request_ip": "[::1]:52054",
- "sentAt": "2020-03-23T03:46:30.923Z",
- "timestamp": "2020-03-23T09:16:31.063+05:30",
- "type": "track",
- "userId": "12345"
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo",
- "headers": {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- "params": {},
- "body": {
- "JSON": {},
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {
- "payload": "{\"text\":\"User 12345 did black_event\",\"username\":\"RudderStack\",\"icon_url\":\"https://cdn.rudderlabs.com/rudderstack.png\"}"
- }
- },
- "files": {},
- "userId": "12345",
- "statusCode": 200
- },
- "metadata": {
- "anonymousId": "00000000000000000000000000",
- "destinationId": "1ZQVSU9SXNg6KYgZALaqjAO3PIL",
- "destinationType": "SLACK",
- "jobId": 129,
- "messageId": "8b8d5937-09bc-49dc-a35e-8cd6370575f8",
- "sourceId": "1YhwKyDcKstudlGxkeN5p2wgsrp"
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'slack',
+ description:
+ 'Test 0-> Identify -> Default template with some whiteListed traits and some of them are with a space in between',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: 'favorite color',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ 'favorite color': 'black',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ originalTimestamp: '2020-03-23T03:46:30.916Z',
+ properties: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ receivedAt: '2020-03-23T09:16:31.041+05:30',
+ request_ip: '[::1]:52056',
+ sentAt: '2020-03-23T03:46:30.916Z',
+ timestamp: '2020-03-23T09:16:31.041+05:30',
+ type: 'identify',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 126,
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"Identified my-namehiji: hulala favorite color: black ","username":"RudderStack","icon_url":"https://cdn.rudderlabs.com/rudderstack.png"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 126,
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 1-> Unsupported event type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ originalTimestamp: '2020-03-23T03:46:30.916Z',
+ properties: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ receivedAt: '2020-03-23T09:16:31.041+05:30',
+ request_ip: '[::1]:52056',
+ sentAt: '2020-03-23T03:46:30.916Z',
+ timestamp: '2020-03-23T09:16:31.041+05:30',
+ type: 'page',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 126,
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ anonymousId: '4de817fb-7f8e-4e23-b9be-f6736dbda20f',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 126,
+ messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 400,
+ error: 'Event type page is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SLACK',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 2 -> Identify call with custom template',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '12345',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '',
+ referrer: '',
+ search: '',
+ title: '',
+ url: '',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ traits: {
+ country: 'USA',
+ email: 'test@domain.com',
+ hiji: 'hulala-1',
+ name: 'my-name-1',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
+ originalTimestamp: '2020-03-23T03:41:46.122Z',
+ receivedAt: '2020-03-23T09:11:46.244+05:30',
+ request_ip: '[::1]:52055',
+ sentAt: '2020-03-23T03:41:46.123Z',
+ timestamp: '2020-03-23T09:11:46.243+05:30',
+ type: 'identify',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '12345',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 123,
+ messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"identified my-name-1 with hiji: hulala-1 ","username":"RudderStack","icon_url":"https://cdn.rudderlabs.com/rudderstack.png"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '12345',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 123,
+ messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 3 -> Track with modern webhook and with custom template including a trait',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ incomingWebhooksType: 'modern',
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example+1',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}} and traits {{traitsList.hiji}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_isent1',
+ integrations: {
+ All: true,
+ },
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ originalTimestamp: '2020-03-23T03:46:30.921Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52057',
+ sentAt: '2020-03-23T03:46:30.921Z',
+ timestamp: '2020-03-23T09:16:31.064+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/id1/id2/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"my-name performed test_isent1 with test_val1 test_val2 and traits hulala"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description:
+ 'Test 4 -> Track call with custom template with no trait and only properties and modern webhook',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ incomingWebhooksType: 'modern',
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example',
+ eventName: 'is',
+ eventChannel: 'example_channel',
+ eventRegex: true,
+ },
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example+1',
+ eventName: 'is',
+ eventChannel: 'example_channel',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_eventing_testis',
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/id1/id2/example',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"my-name performed test_eventing_testis with test_val1 test_val2"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description:
+ 'Test 5 -> Track call with default template and an extra empty event to template mapping containg blank string as event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ incomingWebhooksType: 'modern',
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example',
+ eventName: 'test_eventing_test',
+ eventChannel: 'example_channel',
+ eventRegex: false,
+ },
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example+1',
+ eventName: '',
+ eventChannel: 'example_channel',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_eventing_test',
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/id1/id2/example',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload: '{"text":"my-name did test_eventing_test"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description:
+ 'Test 6 -> Track call with legacy webhook and custom template with properties and traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ incomingWebhooksType: 'legacy',
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example+1',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}} and traits {{traitsList.hiji}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_isent1',
+ integrations: {
+ All: true,
+ },
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ originalTimestamp: '2020-03-23T03:46:30.921Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52057',
+ sentAt: '2020-03-23T03:46:30.921Z',
+ timestamp: '2020-03-23T09:16:31.064+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"my-name performed test_isent1 with test_val1 test_val2 and traits hulala","username":"RudderStack","icon_url":"https://cdn.rudderlabs.com/rudderstack.png"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description:
+ 'Test 7 -> Track call with legacy webhook and custom template with properties and custom channel from mapping',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ incomingWebhooksType: 'legacy',
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/id1/id2/example+1',
+ eventChannel: 'example-of-legacy',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ denyListOfEvents: [
+ {
+ eventName: 'black_event',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_eventing_testis',
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"channel":"example-of-legacy","text":"my-name performed test_eventing_testis with test_val1 test_val2","username":"RudderStack","icon_url":"https://cdn.rudderlabs.com/rudderstack.png"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 8 -> No Event Type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_eventing_testis',
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 400,
+ error: 'Event type is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SLACK',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 9 -> Track call with no Event name',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 400,
+ error: 'Event name is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SLACK',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description:
+ 'Test 10-> Track call with custom template but template is wrong ( space in `{{properties. key1}}` )',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties. key1}} {{properties.key2}} and traits {{traitsList.hiji}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ identifyTemplate: 'identified {{name}} with {{traits}}',
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.1.1-rc.1',
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.1.1-rc.1',
+ },
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ page: {
+ path: '/tests/html/script-test.html',
+ referrer: 'http://localhost:1111/tests/html/',
+ search: '',
+ title: '',
+ url: 'http://localhost:1111/tests/html/script-test.html',
+ },
+ screen: {
+ density: 1.7999999523162842,
+ },
+ traits: {
+ country: 'India',
+ email: 'name@domain.com',
+ hiji: 'hulala',
+ name: 'my-name',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
+ },
+ event: 'test_isent1',
+ integrations: {
+ All: true,
+ },
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ originalTimestamp: '2020-03-23T03:46:30.921Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52057',
+ sentAt: '2020-03-23T03:46:30.921Z',
+ timestamp: '2020-03-23T09:16:31.064+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 128,
+ messageId: '78102118-56ac-4c5a-a495-8cd7c8f71cc2',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 400,
+ error:
+ "Something is wrong with the event template: '{{name}} performed {{event}} with {{properties. key1}} {{properties.key2}} and traits {{traitsList.hiji}}'",
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'SLACK',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'slack',
+ description: 'Test 11 -> Track call with default template',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ ID: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ Name: 'test-slack',
+ DestinationDefinition: {
+ ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
+ Name: 'SLACK',
+ DisplayName: 'Slack',
+ Config: {
+ excludeKeys: [],
+ includeKeys: [],
+ },
+ },
+ Config: {
+ eventChannelSettings: [
+ {
+ eventChannelWebhook: 'https://hooks.slack.com/services/example/test/demo',
+ eventName: 'is',
+ eventRegex: true,
+ },
+ ],
+ eventTemplateSettings: [
+ {
+ eventName: 'is',
+ eventRegex: true,
+ eventTemplate:
+ '{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
+ },
+ {
+ eventName: '',
+ eventRegex: false,
+ eventTemplate: '',
+ },
+ ],
+ webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ whitelistedTraitsSettings: [
+ {
+ trait: 'hiji',
+ },
+ {
+ trait: '',
+ },
+ ],
+ },
+ Enabled: true,
+ Transformations: [],
+ IsProcessorEnabled: true,
+ },
+ message: {
+ anonymousId: '00000000000000000000000000',
+ channel: 'web',
+ context: {},
+ event: 'black_event',
+ integrations: {
+ All: true,
+ },
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ originalTimestamp: '2020-03-23T03:46:30.922Z',
+ properties: {
+ currency: 'USD',
+ key1: 'test_val1',
+ key2: 'test_val2',
+ revenue: 30,
+ user_actual_id: 12345,
+ },
+ receivedAt: '2020-03-23T09:16:31.064+05:30',
+ request_ip: '[::1]:52054',
+ sentAt: '2020-03-23T03:46:30.923Z',
+ timestamp: '2020-03-23T09:16:31.063+05:30',
+ type: 'track',
+ userId: '12345',
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ payload:
+ '{"text":"User 12345 did black_event","username":"RudderStack","icon_url":"https://cdn.rudderlabs.com/rudderstack.png"}',
+ },
+ },
+ files: {},
+ userId: '12345',
+ statusCode: 200,
+ },
+ metadata: {
+ anonymousId: '00000000000000000000000000',
+ destinationId: '1ZQVSU9SXNg6KYgZALaqjAO3PIL',
+ destinationType: 'SLACK',
+ jobId: 129,
+ messageId: '8b8d5937-09bc-49dc-a35e-8cd6370575f8',
+ sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/slack/router/data.ts b/test/integrations/destinations/slack/router/data.ts
index 87b1fe3b225..349b1a486f0 100644
--- a/test/integrations/destinations/slack/router/data.ts
+++ b/test/integrations/destinations/slack/router/data.ts
@@ -17,28 +17,13 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'SLACK',
DisplayName: 'Slack',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [
- {
- eventChannel: '#slack_integration',
- eventName: 'is',
- eventRegex: true,
- },
- {
- eventChannel: '',
- eventName: '',
- eventRegex: false,
- },
- {
- eventChannel: '',
- eventName: '',
- eventRegex: false,
- },
+ { eventChannel: '#slack_integration', eventName: 'is', eventRegex: true },
+ { eventChannel: '', eventName: '', eventRegex: false },
+ { eventChannel: '', eventName: '', eventRegex: false },
],
eventTemplateSettings: [
{
@@ -47,22 +32,11 @@ export const data = [
eventTemplate:
'{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
},
- {
- eventName: '',
- eventRegex: false,
- eventTemplate: '',
- },
+ { eventName: '', eventRegex: false, eventTemplate: '' },
],
identifyTemplate: 'identified {{name}} with {{traits}}',
webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
- whitelistedTraitsSettings: [
- {
- trait: 'hiji',
- },
- {
- trait: '',
- },
- ],
+ whitelistedTraitsSettings: [{ trait: 'hiji' }, { trait: '' }],
},
Enabled: true,
Transformations: [],
@@ -78,15 +52,9 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.1-rc.1',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.1-rc.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.1-rc.1' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
+ os: { name: '', version: '' },
page: {
path: '/tests/html/script-test.html',
referrer: 'http://localhost:1111/tests/html/',
@@ -94,9 +62,7 @@ export const data = [
title: '',
url: 'http://localhost:1111/tests/html/script-test.html',
},
- screen: {
- density: 1.7999999523162842,
- },
+ screen: { density: 1.7999999523162842 },
traits: {
country: 'India',
email: 'name@domain.com',
@@ -106,9 +72,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
originalTimestamp: '2020-03-23T03:46:30.916Z',
properties: {
@@ -132,6 +96,7 @@ export const data = [
jobId: 126,
messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
],
@@ -187,6 +152,7 @@ export const data = [
jobId: 126,
messageId: '9ecc0183-89ed-48bd-87eb-b2d8e1ca6780',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
statTags: {
@@ -223,28 +189,13 @@ export const data = [
ID: '1ZQUiJVMlmF7lfsdfXg7KXQnlLV',
Name: 'SLACK',
DisplayName: 'Slack',
- Config: {
- excludeKeys: [],
- includeKeys: [],
- },
+ Config: { excludeKeys: [], includeKeys: [] },
},
Config: {
eventChannelSettings: [
- {
- eventChannel: '#slack_integration',
- eventName: 'is',
- eventRegex: true,
- },
- {
- eventChannel: '',
- eventName: '',
- eventRegex: false,
- },
- {
- eventChannel: '',
- eventName: '',
- eventRegex: false,
- },
+ { eventChannel: '#slack_integration', eventName: 'is', eventRegex: true },
+ { eventChannel: '', eventName: '', eventRegex: false },
+ { eventChannel: '', eventName: '', eventRegex: false },
],
eventTemplateSettings: [
{
@@ -253,22 +204,11 @@ export const data = [
eventTemplate:
'{{name}} performed {{event}} with {{properties.key1}} {{properties.key2}}',
},
- {
- eventName: '',
- eventRegex: false,
- eventTemplate: '',
- },
+ { eventName: '', eventRegex: false, eventTemplate: '' },
],
identifyTemplate: 'identified {{name}} with {{traits}}',
webhookUrl: 'https://hooks.slack.com/services/THZM86VSS/BV9HZ2UN6/demo',
- whitelistedTraitsSettings: [
- {
- trait: 'hiji',
- },
- {
- trait: '',
- },
- ],
+ whitelistedTraitsSettings: [{ trait: 'hiji' }, { trait: '' }],
},
Enabled: true,
Transformations: [],
@@ -284,25 +224,11 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.1.1-rc.1',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.1-rc.1',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.1-rc.1' },
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- page: {
- path: '',
- referrer: '',
- search: '',
- title: '',
- url: '',
- },
- screen: {
- density: 1.7999999523162842,
- },
+ os: { name: '', version: '' },
+ page: { path: '', referrer: '', search: '', title: '', url: '' },
+ screen: { density: 1.7999999523162842 },
traits: {
country: 'India',
email: 'name@domain.com',
@@ -318,9 +244,7 @@ export const data = [
hiji: 'hulala-1',
name: 'my-name-1',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
originalTimestamp: '2020-03-23T03:41:46.122Z',
receivedAt: '2020-03-23T09:11:46.244+05:30',
@@ -337,6 +261,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
},
],
@@ -413,6 +338,7 @@ export const data = [
jobId: 123,
messageId: '4aaecff2-a513-4bbf-9824-c471f4ac9777',
sourceId: '1YhwKyDcKstudlGxkeN5p2wgsrp',
+ userId: 'u1',
},
],
statusCode: 200,
diff --git a/test/integrations/destinations/snapchat_conversion/router/data.ts b/test/integrations/destinations/snapchat_conversion/router/data.ts
index bfa9acd4d2c..685ed2e5b4e 100644
--- a/test/integrations/destinations/snapchat_conversion/router/data.ts
+++ b/test/integrations/destinations/snapchat_conversion/router/data.ts
@@ -69,6 +69,7 @@ export const data = [
},
metadata: {
jobId: 1,
+ userId: 'u1',
},
destination: {
Config: {
@@ -135,6 +136,7 @@ export const data = [
},
metadata: {
jobId: 2,
+ userId: 'u1',
},
destination: {
Config: {
@@ -201,6 +203,7 @@ export const data = [
},
metadata: {
jobId: 3,
+ userId: 'u1',
},
destination: {
Config: {
@@ -244,12 +247,15 @@ export const data = [
metadata: [
{
jobId: 1,
+ userId: 'u1',
},
{
jobId: 2,
+ userId: 'u1',
},
{
jobId: 3,
+ userId: 'u1',
},
],
batched: true,
@@ -381,6 +387,7 @@ export const data = [
},
metadata: {
jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
@@ -412,6 +419,7 @@ export const data = [
metadata: [
{
jobId: 4,
+ userId: 'u1',
},
],
batched: false,
diff --git a/test/integrations/destinations/snapchat_custom_audience/dataDelivery/business.ts b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/business.ts
new file mode 100644
index 00000000000..4ee646bedbf
--- /dev/null
+++ b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/business.ts
@@ -0,0 +1,118 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import {
+ generateMetadata,
+ generateProxyV0Payload,
+ generateProxyV1Payload,
+} from '../../../testUtils';
+
+const commonHeaders = {
+ Authorization: 'Bearer abcd123',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c']],
+ },
+ ],
+ },
+};
+
+export const businessV0TestScenarios = [
+ {
+ id: 'snapchat_custom_audience_v0_oauth_scenario_1',
+ name: 'snapchat_custom_audience',
+ description: '[Proxy v0 API] :: successfull call',
+ successCriteria: 'Proper response from destination is received',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ destinationResponse: {
+ response: {
+ request_status: 'SUCCESS',
+ request_id: '12345',
+ users: [
+ {
+ sub_request_status: 'SUCCESS',
+ user: {
+ number_uploaded_users: 1,
+ },
+ },
+ ],
+ },
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ },
+];
+
+export const businessV1TestScenarios: ProxyV1TestData[] = [
+ {
+ id: 'snapchat_custom_audience_v1_oauth_scenario_1',
+ name: 'snapchat_custom_audience',
+ description: '[Proxy v1 API] :: successfull oauth',
+ successCriteria: 'Proper response from destination is received',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: 'Request Processed Successfully',
+ response: [
+ {
+ error: `{\"request_status\":\"SUCCESS\",\"request_id\":\"12345\",\"users\":[{\"sub_request_status\":\"SUCCESS\",\"user\":{\"number_uploaded_users\":1}}]}`,
+ statusCode: 200,
+ metadata: generateMetadata(1),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/snapchat_custom_audience/dataDelivery/data.ts b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/data.ts
index 2ed5625fe8a..4991ed1d38a 100644
--- a/test/integrations/destinations/snapchat_custom_audience/dataDelivery/data.ts
+++ b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/data.ts
@@ -1,222 +1,11 @@
+import { businessV0TestScenarios, businessV1TestScenarios } from './business';
+import { v0OauthScenarios, v1OauthScenarios } from './oauth';
+import { otherScenariosV1 } from './other';
+
export const data = [
- {
- "name": "snapchat_custom_audience",
- "description": "Test 0",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- },
- "method": "POST"
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": {
- "output": {
- "status": 200,
- "message": "Request Processed Successfully",
- "destinationResponse": {
- "response": {
- "request_status": "SUCCESS",
- "request_id": "12345",
- "users": [
- {
- "sub_request_status": "SUCCESS",
- "user": {
- "number_uploaded_users": 1
- }
- }
- ]
- },
- "status": 200
- }
- }
- }
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 1",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/456/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- },
- "method": "POST"
- }
- },
- "output": {
- "response": {
- "status": 500,
- "body": {
- "output": {
- "status": 500,
- "destinationResponse": {
- "response": "unauthorized",
- "status": 401
- },
- "message": "Failed with unauthorized during snapchat_custom_audience response transformation",
- "statTags": {
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "retryable",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- },
- "authErrorCategory": "REFRESH_TOKEN"
- }
- }
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 2",
- "feature": "dataDelivery",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/789/users",
- "headers": {
- "Authorization": "Bearer abcd123",
- "Content-Type": "application/json"
- },
- "body": {
- "JSON": {
- "users": [
- {
- "id": "123456",
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "params": {
- "destination": "snapchat_custom_audience"
- }
- },
- "method": "POST"
- }
- },
- "output": {
- "response": {
- "status": 400,
- "body": {
- "output": {
- "authErrorCategory": "AUTH_STATUS_INACTIVE",
- "status": 400,
- "destinationResponse": {
- "response": {
- "request_status": "ERROR",
- "request_id": "98e2a602-3cf4-4596-a8f9-7f034161f89a",
- "debug_message": "Caller does not have permission",
- "display_message": "We're sorry, but the requested resource is not available at this time",
- "error_code": "E3002"
- },
- "status": 403
- },
- "message": "undefined during snapchat_custom_audience response transformation",
- "statTags": {
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "errorCategory": "network",
- "destinationId": "Non-determininable",
- "workspaceId": "Non-determininable",
- "errorType": "aborted",
- "feature": "dataDelivery",
- "implementation": "native",
- "module": "destination"
- }
- }
- }
- }
- }
- }
-]
\ No newline at end of file
+ ...v0OauthScenarios,
+ ...v1OauthScenarios,
+ ...businessV0TestScenarios,
+ ...businessV1TestScenarios,
+ ...otherScenariosV1,
+];
diff --git a/test/integrations/destinations/snapchat_custom_audience/dataDelivery/oauth.ts b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/oauth.ts
new file mode 100644
index 00000000000..e4bf5d45882
--- /dev/null
+++ b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/oauth.ts
@@ -0,0 +1,244 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import {
+ generateMetadata,
+ generateProxyV0Payload,
+ generateProxyV1Payload,
+} from '../../../testUtils';
+
+const commonHeaders = {
+ Authorization: 'Bearer abcd123',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+};
+
+const commonRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c']],
+ },
+ ],
+ },
+};
+
+const commonDeleteRequestParameters = {
+ headers: commonHeaders,
+ JSON: {
+ users: [
+ {
+ id: '123456',
+ schema: ['EMAIL_SHA256'],
+ data: [['938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c']],
+ },
+ ],
+ },
+};
+
+const retryStatTags = {
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'retryable',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+const abortStatTags = {
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+export const v0OauthScenarios = [
+ {
+ id: 'snapchat_custom_audience_v0_oauth_scenario_2',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v0 API] :: Oauth where valid credentials are missing as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 401 - the proxy should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/456/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ status: 500,
+ destinationResponse: {
+ response: 'unauthorized',
+ status: 401,
+ },
+ message:
+ 'Failed with unauthorized during snapchat_custom_audience response transformation',
+ statTags: retryStatTags,
+ authErrorCategory: 'REFRESH_TOKEN',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v0_oauth_scenario_3',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v0 API] :: Oauth where ACCESS_TOKEN_SCOPE_INSUFFICIENT error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: generateProxyV0Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/999/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ status: 400,
+ destinationResponse: {
+ response: {
+ request_status: 'ERROR',
+ request_id: '98e2a602-3cf4-4596-a8f9-7f034161f89a',
+ debug_message: 'Caller does not have permission',
+ display_message:
+ "We're sorry, but the requested resource is not available at this time",
+ error_code: 'E3002',
+ },
+ status: 403,
+ },
+ message: 'undefined during snapchat_custom_audience response transformation',
+ statTags: abortStatTags,
+ },
+ },
+ },
+ },
+ },
+];
+
+export const v1OauthScenarios: ProxyV1TestData[] = [
+ {
+ id: 'snapchat_custom_audience_v1_oauth_scenario_1',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v1 API] :: Oauth where valid credentials are missing as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 401 - the proxy should return 500 with authErrorCategory as REFRESH_TOKEN',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/456/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 500,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"unauthorized"',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: retryStatTags,
+ authErrorCategory: 'REFRESH_TOKEN',
+ message:
+ 'Failed with unauthorized during snapchat_custom_audience response transformation',
+ status: 500,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v1_oauth_scenario_2',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v1 API] :: Oauth where ACCESS_TOKEN_SCOPE_INSUFFICIENT error as mock response from destination',
+ successCriteria:
+ 'Since the error from the destination is 403 - the proxy should return 500 with authErrorCategory as AUTH_STATUS_INACTIVE',
+ scenario: 'Oauth',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ ...commonRequestParameters,
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/999/users',
+ params: {
+ destination: 'snapchat_custom_audience',
+ },
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ response: [
+ {
+ error: `{"request_status":"ERROR","request_id":"98e2a602-3cf4-4596-a8f9-7f034161f89a","debug_message":"Caller does not have permission","display_message":"We're sorry, but the requested resource is not available at this time","error_code":"E3002"}`,
+ statusCode: 400,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: abortStatTags,
+ message: 'undefined during snapchat_custom_audience response transformation',
+ status: 400,
+ authErrorCategory: 'AUTH_STATUS_INACTIVE',
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/snapchat_custom_audience/dataDelivery/other.ts b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/other.ts
new file mode 100644
index 00000000000..90508c2481c
--- /dev/null
+++ b/test/integrations/destinations/snapchat_custom_audience/dataDelivery/other.ts
@@ -0,0 +1,204 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+
+const expectedStatTags = {
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'retryable',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+export const otherScenariosV1: ProxyV1TestData[] = [
+ {
+ id: 'snapchat_custom_audience_v1_other_scenario_1',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v1 API] :: Scenario for testing Service Unavailable error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_service_not_available',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error:
+ '{"error":{"message":"Service Unavailable","description":"The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later."}}',
+ statusCode: 503,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 503,
+ message: 'Service Unavailable during snapchat_custom_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v1_other_scenario_2',
+ name: 'snapchat_custom_audience',
+ description: '[Proxy v1 API] :: Scenario for testing Internal Server error from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_internal_server_error',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Internal Server Error"',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 500,
+ message: 'undefined during snapchat_custom_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v1_other_scenario_3',
+ name: 'snapchat_custom_audience',
+ description: '[Proxy v1 API] :: Scenario for testing Gateway Time Out error from destination',
+ successCriteria: 'Should return 504 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_gateway_time_out',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '"Gateway Timeout"',
+ statusCode: 504,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 504,
+ message: 'undefined during snapchat_custom_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v1_other_scenario_4',
+ name: 'snapchat_custom_audience',
+ description: '[Proxy v1 API] :: Scenario for testing null response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_response',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 500,
+ message: 'undefined during snapchat_custom_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'snapchat_custom_audience_v1_other_scenario_5',
+ name: 'snapchat_custom_audience',
+ description:
+ '[Proxy v1 API] :: Scenario for testing null and no status response from destination',
+ successCriteria: 'Should return 500 status code with error message',
+ scenario: 'Framework',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload({
+ endpoint: 'https://random_test_url/test_for_null_and_no_status',
+ }),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ response: [
+ {
+ error: '""',
+ statusCode: 500,
+ metadata: generateMetadata(1),
+ },
+ ],
+ statTags: expectedStatTags,
+ status: 500,
+ message: 'undefined during snapchat_custom_audience response transformation',
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/snapchat_custom_audience/network.ts b/test/integrations/destinations/snapchat_custom_audience/network.ts
index 9be134c2026..39bd46122dd 100644
--- a/test/integrations/destinations/snapchat_custom_audience/network.ts
+++ b/test/integrations/destinations/snapchat_custom_audience/network.ts
@@ -81,4 +81,35 @@ export const networkCallsData = [
statusText: 'Forbidden',
},
},
+ {
+ httpReq: {
+ url: 'https://adsapi.snapchat.com/v1/segments/999/users',
+ data: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['938758751f5af66652a118e26503af824404bc13acd1cb7642ddff99916f0e1c']],
+ },
+ ],
+ },
+ params: { destination: 'snapchat_custom_audience' },
+ headers: {
+ Authorization: 'Bearer abcd123',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ request_status: 'ERROR',
+ request_id: '98e2a602-3cf4-4596-a8f9-7f034161f89a',
+ debug_message: 'Caller does not have permission',
+ display_message: "We're sorry, but the requested resource is not available at this time",
+ error_code: 'E3002',
+ },
+ status: 403,
+ statusText: 'Forbidden',
+ },
+ },
];
diff --git a/test/integrations/destinations/snapchat_custom_audience/processor/data.ts b/test/integrations/destinations/snapchat_custom_audience/processor/data.ts
index 9ad6106c7e9..546f056fa43 100644
--- a/test/integrations/destinations/snapchat_custom_audience/processor/data.ts
+++ b/test/integrations/destinations/snapchat_custom_audience/processor/data.ts
@@ -1,1404 +1,1351 @@
export const data = [
- {
- "name": "snapchat_custom_audience",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": true,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ]
- ],
- "id": "123"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ],
- "remove": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ]
- ],
- "id": "123"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "test@rudderstack.com",
- "phone": "@09876543210",
- "firstName": "rudderlabs",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ],
- [
- "1c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "test@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "email": "test@rudderstack.com",
- "phone": "@09876543210",
- "firstName": "rudderlabs",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419"
- ],
- [
- "1c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd"
- ]
- ],
- "id": "123"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audience",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@rudderstack.com",
- "phone": "@09876543210",
- "firstName": "rudderlabs",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "Event type audience is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@rudderstack.com",
- "phone": "@09876543210",
- "firstName": "rudderlabs",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "Event type is required",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "Message properties is not present. Aborting message",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "listData is not present inside properties. Aborting message",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "abc": "123"
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "Neither 'add' nor 'remove' property is present inside 'listData'. Aborting message",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 400,
- "error": "Required schema parameter email is not found from payload",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SNAPCHAT_CUSTOM_AUDIENCE",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "email"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "remove": [
- {
- "email": "abcd@abc.com",
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- },
- {
- "phone": "@09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "DELETE",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "EMAIL_SHA256"
- ],
- "data": [
- [
- "8c37cbc5d9abb3082303c6548571cfc7655a4546ddc1e943f041fc9126e7274a"
- ]
- ],
- "id": "123"
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 12",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "phone"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "09876543210",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "PHONE_SHA256"
- ],
- "data": [
- [
- "7619ee8cea49187f309616e30ecf54be072259b43760f1f550a644945d5572f2"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "snapchat_custom_audience",
- "description": "Test 13",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "destination": {
- "Config": {
- "segmentId": "123",
- "disableHashing": false,
- "schema": "mobileAdId"
- }
- },
- "message": {
- "userId": "user 1",
- "anonymousId": "anon-id-new",
- "event": "event1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "email": "test@abc.com",
- "phone": "09876543210",
- "mobileId": "1334",
- "firstName": "test",
- "lastName": "rudderlabs",
- "country": "US",
- "postalCode": "1245"
- }
- ]
- },
- "enablePartialFailure": true
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://adsapi.snapchat.com/v1/segments/123/users",
- "headers": {
- "Authorization": "Bearer dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "users": [
- {
- "schema": [
- "MOBILE_AD_ID_SHA256"
- ],
- "data": [
- [
- "eb43272640b269219a01caf99c5a4122d6edc0916d45ac13c0ce80ca3ad2def0"
- ]
- ]
- }
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "secret": {
- "access_token": "dummyAccessToken",
- "refresh_token": "dummyRefreshToken",
- "developer_token": "dummyDeveloperToken"
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419']],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: true,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'd3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419']],
+ id: '123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ remove: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419']],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419']],
+ id: '123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'test@rudderstack.com',
+ phone: '@09876543210',
+ firstName: 'rudderlabs',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [
+ ['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419'],
+ ['1c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd'],
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'test@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ email: 'test@rudderstack.com',
+ phone: '@09876543210',
+ firstName: 'rudderlabs',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [
+ ['d3142c8f9c9129484daf28df80cc5c955791efed5e69afabb603bc8cb9ffd419'],
+ ['1c5e54849f5c711ce38fa60716fbbe44bff478f9ca250897b39cdfc2438cd1bd'],
+ ],
+ id: '123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audience',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@rudderstack.com',
+ phone: '@09876543210',
+ firstName: 'rudderlabs',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error: 'Event type audience is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@rudderstack.com',
+ phone: '@09876543210',
+ firstName: 'rudderlabs',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error: 'Event type is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error: 'Message properties is not present. Aborting message',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error: 'listData is not present inside properties. Aborting message',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ abc: '123',
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error:
+ "Neither 'add' nor 'remove' property is present inside 'listData'. Aborting message",
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: '',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 400,
+ error: 'Required schema parameter email is not found from payload',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SNAPCHAT_CUSTOM_AUDIENCE',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'email',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ remove: [
+ {
+ email: 'abcd@abc.com',
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ {
+ phone: '@09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'DELETE',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['EMAIL_SHA256'],
+ data: [['8c37cbc5d9abb3082303c6548571cfc7655a4546ddc1e943f041fc9126e7274a']],
+ id: '123',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 12',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'phone',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '09876543210',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['PHONE_SHA256'],
+ data: [['7619ee8cea49187f309616e30ecf54be072259b43760f1f550a644945d5572f2']],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'snapchat_custom_audience',
+ description: 'Test 13',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ destination: {
+ Config: {
+ segmentId: '123',
+ disableHashing: false,
+ schema: 'mobileAdId',
+ },
+ },
+ message: {
+ userId: 'user 1',
+ anonymousId: 'anon-id-new',
+ event: 'event1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ email: 'test@abc.com',
+ phone: '09876543210',
+ mobileId: '1334',
+ firstName: 'test',
+ lastName: 'rudderlabs',
+ country: 'US',
+ postalCode: '1245',
+ },
+ ],
+ },
+ enablePartialFailure: true,
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://adsapi.snapchat.com/v1/segments/123/users',
+ headers: {
+ Authorization: 'Bearer dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ users: [
+ {
+ schema: ['MOBILE_AD_ID_SHA256'],
+ data: [['eb43272640b269219a01caf99c5a4122d6edc0916d45ac13c0ce80ca3ad2def0']],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ secret: {
+ access_token: 'dummyAccessToken',
+ refresh_token: 'dummyRefreshToken',
+ developer_token: 'dummyDeveloperToken',
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/snapchat_custom_audience/router/data.ts b/test/integrations/destinations/snapchat_custom_audience/router/data.ts
index 2807201e734..44fdb4b47b2 100644
--- a/test/integrations/destinations/snapchat_custom_audience/router/data.ts
+++ b/test/integrations/destinations/snapchat_custom_audience/router/data.ts
@@ -1,13 +1,9 @@
-import { FEATURES, MODULES } from '../../../../../src/v0/util/tags';
-
-const DEST_TYPE = 'snapchat_custom_audience';
-
export const data = [
{
- name: DEST_TYPE,
+ name: 'snapchat_custom_audience',
description: 'Test 0',
- feature: FEATURES.ROUTER,
- module: MODULES.DESTINATION,
+ feature: 'router',
+ module: 'destination',
version: 'v0',
input: {
request: {
@@ -20,14 +16,9 @@ export const data = [
refresh_token: 'dummyRefreshToken',
developer_token: 'dummyDeveloperToken',
},
+ userId: 'u1',
},
- destination: {
- Config: {
- segmentId: '123',
- disableHashing: false,
- schema: 'email',
- },
- },
+ destination: { Config: { segmentId: '123', disableHashing: false, schema: 'email' } },
message: {
userId: 'user 1',
anonymousId: 'anon-id-new',
@@ -48,17 +39,12 @@ export const data = [
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
},
],
- destType: DEST_TYPE,
+ destType: 'snapchat_custom_audience',
},
},
},
@@ -104,17 +90,12 @@ export const data = [
developer_token: 'dummyDeveloperToken',
refresh_token: 'dummyRefreshToken',
},
+ userId: 'u1',
},
],
batched: false,
statusCode: 200,
- destination: {
- Config: {
- disableHashing: false,
- schema: 'email',
- segmentId: '123',
- },
- },
+ destination: { Config: { disableHashing: false, schema: 'email', segmentId: '123' } },
},
],
},
diff --git a/test/integrations/destinations/splitio/processor/data.ts b/test/integrations/destinations/splitio/processor/data.ts
index 6f77c6f562c..3fda93cc30e 100644
--- a/test/integrations/destinations/splitio/processor/data.ts
+++ b/test/integrations/destinations/splitio/processor/data.ts
@@ -1,915 +1,905 @@
export const data = [
- {
- "name": "splitio",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "traits": {
- "martin": 21.565,
- "trafficTypeName": "user",
- "vertical": "restaurant",
- "eventTypeId": "page_load end to end",
- "timestamp": 1513357833000,
- "GMV": false
- },
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "abc": "new-val",
- "key": "key_user_0",
- "value": "0.93"
- },
- "library": {
- "name": "http"
- }
- },
- "type": "group",
- "groupId": "group1",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "group",
- "key": "user123",
- "timestamp": 1579566094208,
- "environmentName": "staging",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": false
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "traits": {
- "martin": 21.565,
- "trafficTypeName": "user",
- "eventTypeId": "page_load end to end",
- "timestamp": 1513357833000,
- "address": {
- "city": "San Francisco",
- "state": "CA",
- "country": "USA"
- },
- "key1": {
- "a": "a"
- },
- "key2": [
- 1,
- 2,
- 3
- ],
- "key3": {
- "key4": {}
- },
- "key5": null
- },
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "abc": "new-val",
- "key": "key_user_0"
- },
- "library": {
- "name": "http"
- }
- },
- "type": "identify",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "identify",
- "key": "user123",
- "timestamp": 1579566094208,
- "environmentName": "staging",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "address.city": "San Francisco",
- "address.state": "CA",
- "address.country": "USA",
- "key1.a": "a",
- "key2[0]": 1,
- "key2[1]": 2,
- "key2[2]": 3
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "event": "splitio_test_1",
- "messageId": "9b200548-5961-4448-9dbc-098b7ce85751",
- "properties": {
- "eventTypeId": "page_load",
- "trafficTypeName": "user",
- "key": "key_user_0",
- "timestamp": 1513357833000,
- "value": "0.93",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val",
- "property1": {
- "property2": 1,
- "property3": "test",
- "property4": {
- "subProp1": {
- "a": "a",
- "b": "b"
- },
- "subProp2": [
- "a",
- "b"
- ],
- "subProp3": {
- "prop": {}
- }
- }
- },
- "properties5": null
- },
- "receivedAt": "2021-03-01T22:55:54.806Z",
- "rudderId": "6886eb9e-215d-4f61-a651-4b8ef18aaea3",
- "timestamp": "2021-03-01T22:55:54.771Z",
- "type": "track",
- "userId": "user 1"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "production",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "splitio_test_1",
- "key": "user 1",
- "timestamp": 1614639354771,
- "value": 0.93,
- "environmentName": "production",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val",
- "property1.property2": 1,
- "property1.property3": "test",
- "property1.property4.subProp1.a": "a",
- "property1.property4.subProp1.b": "b",
- "property1.property4.subProp2[0]": "a",
- "property1.property4.subProp2[1]": "b"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "name": "splitio_test_1",
- "messageId": "9b200548-5961-4448-9dbc-098b7ce85751",
- "properties": {
- "eventTypeId": "page_load",
- "trafficTypeName": "user",
- "key": "key_user_0",
- "timestamp": 1513357833000,
- "value": "0.93",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val"
- },
- "receivedAt": "2021-03-01T22:55:54.806Z",
- "rudderId": "6886eb9e-215d-4f61-a651-4b8ef18aaea3",
- "timestamp": "2021-03-01T22:55:54.771Z",
- "type": "page",
- "userId": "user 1"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "production",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "Viewed_splitio_test_1_page",
- "key": "user 1",
- "timestamp": 1614639354771,
- "value": 0.93,
- "environmentName": "production",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "name": "splitio_test_1",
- "messageId": "9b200548-5961-4448-9dbc-098b7ce85751",
- "properties": {
- "eventTypeId": "page_load",
- "trafficTypeName": "user",
- "key": "key_user_0",
- "timestamp": 1513357833000,
- "value": "0.93",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val"
- },
- "receivedAt": "2021-03-01T22:55:54.806Z",
- "rudderId": "6886eb9e-215d-4f61-a651-4b8ef18aaea3",
- "timestamp": "2021-03-01T22:55:54.771Z",
- "type": "screen",
- "userId": "user 1"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "Viewed_splitio_test_1_screen",
- "key": "user 1",
- "timestamp": 1614639354771,
- "value": 0.93,
- "environmentName": "staging",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "abc": "new-val",
- "key": "key_user_0",
- "newProperty": "1",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": false
- },
- "library": {
- "name": "http"
- }
- },
- "type": "identify",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "identify",
- "key": "user123",
- "timestamp": 1579566094208,
- "environmentName": "staging",
- "trafficTypeName": "user",
- "properties": {
- "abc": "new-val",
- "newProperty": "1",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": false
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "abc": "new-val",
- "key": "key_user_0",
- "newProperty": "1"
- },
- "library": {
- "name": "http"
- }
- },
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Event type is required",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SPLITIO",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "traits": {
- "abc": "new-val",
- "key": "key_user_0",
- "newProperty": "1"
- },
- "library": {
- "name": "http"
- }
- },
- "type": "abc",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Event type abc is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SPLITIO",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "name": "@$%%^&",
- "messageId": "9b200548-5961-4448-9dbc-098b7ce85751",
- "properties": {
- "eventTypeId": "page_load",
- "trafficTypeName": "user",
- "key": "key_user_0",
- "timestamp": 1513357833000,
- "value": "0.93",
- "martin": 21.565,
- "vertical": "restaurant",
- "GMV": true,
- "abc": "new-val"
- },
- "receivedAt": "2021-03-01T22:55:54.806Z",
- "rudderId": "6886eb9e-215d-4f61-a651-4b8ef18aaea3",
- "timestamp": "2021-03-01T22:55:54.771Z",
- "type": "page",
- "userId": "user 1"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "production",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "eventTypeId does not match with ideal format /^[\\dA-Za-z][\\w.-]{0,79}$/",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "SPLITIO",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "name": "1pplication accepted",
- "messageId": "9b200548-5961-4448-9dbc-098b7ce85751",
- "category": "food",
- "properties": {
- "eventTypeId": "page_load",
- "trafficTypeName": "user",
- "key": "key_user_0",
- "timestamp": 1513357833000,
- "value": "bc2",
- "martin": 21.565,
- "vertical": [
- "restaurant",
- "mall"
- ],
- "GMV": true,
- "abc": "new-val"
- },
- "receivedAt": "2021-03-01T22:55:54.806Z",
- "rudderId": "6886eb9e-215d-4f61-a651-4b8ef18aaea3",
- "timestamp": "2021-03-01T22:55:54.771Z",
- "type": "page",
- "userId": "user 1"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "production",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "Viewed_1pplication_accepted_page",
- "key": "user 1",
- "timestamp": 1614639354771,
- "environmentName": "production",
- "trafficTypeName": "user",
- "properties": {
- "martin": 21.565,
- "vertical[0]": "restaurant",
- "vertical[1]": "mall",
- "GMV": true,
- "abc": "new-val",
- "category": "food"
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "splitio",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "message": {
- "userId": "user123",
- "messageId": "c73198a8-41d8-4426-9fd9-de167194d5f3",
- "rudderId": "bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5",
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- }
- },
- "type": "identify",
- "timestamp": "2020-01-21T00:21:34.208Z",
- "writeKey": "1pe7u01A7rYOrvacE6WSgI6ESXh",
- "receivedAt": "2021-04-19T14:53:18.215+05:30",
- "requestIP": "[::1]"
- },
- "destination": {
- "Config": {
- "apiKey": "abcde",
- "environment": "staging",
- "trafficType": "user"
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://events.split.io/api/events",
- "headers": {
- "Content-Type": "application/json",
- "Authorization": "Bearer abcde"
- },
- "params": {},
- "body": {
- "JSON": {
- "eventTypeId": "identify",
- "key": "user123",
- "timestamp": 1579566094208,
- "environmentName": "staging",
- "trafficTypeName": "user",
- "properties": {}
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'splitio',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ traits: {
+ martin: 21.565,
+ trafficTypeName: 'user',
+ vertical: 'restaurant',
+ eventTypeId: 'page_load end to end',
+ timestamp: 1513357833000,
+ GMV: false,
+ },
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ traits: {
+ abc: 'new-val',
+ key: 'key_user_0',
+ value: '0.93',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ type: 'group',
+ groupId: 'group1',
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'group',
+ key: 'user123',
+ timestamp: 1579566094208,
+ environmentName: 'staging',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: false,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ traits: {
+ martin: 21.565,
+ trafficTypeName: 'user',
+ eventTypeId: 'page_load end to end',
+ timestamp: 1513357833000,
+ address: {
+ city: 'San Francisco',
+ state: 'CA',
+ country: 'USA',
+ },
+ key1: {
+ a: 'a',
+ },
+ key2: [1, 2, 3],
+ key3: {
+ key4: {},
+ },
+ key5: null,
+ },
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ traits: {
+ abc: 'new-val',
+ key: 'key_user_0',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ type: 'identify',
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'identify',
+ key: 'user123',
+ timestamp: 1579566094208,
+ environmentName: 'staging',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ 'address.city': 'San Francisco',
+ 'address.state': 'CA',
+ 'address.country': 'USA',
+ 'key1.a': 'a',
+ 'key2[0]': 1,
+ 'key2[1]': 2,
+ 'key2[2]': 3,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ event: 'splitio_test_1',
+ messageId: '9b200548-5961-4448-9dbc-098b7ce85751',
+ properties: {
+ eventTypeId: 'page_load',
+ trafficTypeName: 'user',
+ key: 'key_user_0',
+ timestamp: 1513357833000,
+ value: '0.93',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ property1: {
+ property2: 1,
+ property3: 'test',
+ property4: {
+ subProp1: {
+ a: 'a',
+ b: 'b',
+ },
+ subProp2: ['a', 'b'],
+ subProp3: {
+ prop: {},
+ },
+ },
+ },
+ properties5: null,
+ },
+ receivedAt: '2021-03-01T22:55:54.806Z',
+ rudderId: '6886eb9e-215d-4f61-a651-4b8ef18aaea3',
+ timestamp: '2021-03-01T22:55:54.771Z',
+ type: 'track',
+ userId: 'user 1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'production',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'splitio_test_1',
+ key: 'user 1',
+ timestamp: 1614639354771,
+ value: 0.93,
+ environmentName: 'production',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ 'property1.property2': 1,
+ 'property1.property3': 'test',
+ 'property1.property4.subProp1.a': 'a',
+ 'property1.property4.subProp1.b': 'b',
+ 'property1.property4.subProp2[0]': 'a',
+ 'property1.property4.subProp2[1]': 'b',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ name: 'splitio_test_1',
+ messageId: '9b200548-5961-4448-9dbc-098b7ce85751',
+ properties: {
+ eventTypeId: 'page_load',
+ trafficTypeName: 'user',
+ key: 'key_user_0',
+ timestamp: 1513357833000,
+ value: '0.93',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ },
+ receivedAt: '2021-03-01T22:55:54.806Z',
+ rudderId: '6886eb9e-215d-4f61-a651-4b8ef18aaea3',
+ timestamp: '2021-03-01T22:55:54.771Z',
+ type: 'page',
+ userId: 'user 1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'production',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'Viewed_splitio_test_1_page',
+ key: 'user 1',
+ timestamp: 1614639354771,
+ value: 0.93,
+ environmentName: 'production',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ name: 'splitio_test_1',
+ messageId: '9b200548-5961-4448-9dbc-098b7ce85751',
+ properties: {
+ eventTypeId: 'page_load',
+ trafficTypeName: 'user',
+ key: 'key_user_0',
+ timestamp: 1513357833000,
+ value: '0.93',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ },
+ receivedAt: '2021-03-01T22:55:54.806Z',
+ rudderId: '6886eb9e-215d-4f61-a651-4b8ef18aaea3',
+ timestamp: '2021-03-01T22:55:54.771Z',
+ type: 'screen',
+ userId: 'user 1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'Viewed_splitio_test_1_screen',
+ key: 'user 1',
+ timestamp: 1614639354771,
+ value: 0.93,
+ environmentName: 'staging',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ traits: {
+ abc: 'new-val',
+ key: 'key_user_0',
+ newProperty: '1',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: false,
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ type: 'identify',
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'identify',
+ key: 'user123',
+ timestamp: 1579566094208,
+ environmentName: 'staging',
+ trafficTypeName: 'user',
+ properties: {
+ abc: 'new-val',
+ newProperty: '1',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: false,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ traits: {
+ abc: 'new-val',
+ key: 'key_user_0',
+ newProperty: '1',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SPLITIO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ traits: {
+ abc: 'new-val',
+ key: 'key_user_0',
+ newProperty: '1',
+ },
+ library: {
+ name: 'http',
+ },
+ },
+ type: 'abc',
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type abc is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SPLITIO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ name: '@$%%^&',
+ messageId: '9b200548-5961-4448-9dbc-098b7ce85751',
+ properties: {
+ eventTypeId: 'page_load',
+ trafficTypeName: 'user',
+ key: 'key_user_0',
+ timestamp: 1513357833000,
+ value: '0.93',
+ martin: 21.565,
+ vertical: 'restaurant',
+ GMV: true,
+ abc: 'new-val',
+ },
+ receivedAt: '2021-03-01T22:55:54.806Z',
+ rudderId: '6886eb9e-215d-4f61-a651-4b8ef18aaea3',
+ timestamp: '2021-03-01T22:55:54.771Z',
+ type: 'page',
+ userId: 'user 1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'production',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'eventTypeId does not match with ideal format /^[\\dA-Za-z][\\w.-]{0,79}$/',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'SPLITIO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ name: '1pplication accepted',
+ messageId: '9b200548-5961-4448-9dbc-098b7ce85751',
+ category: 'food',
+ properties: {
+ eventTypeId: 'page_load',
+ trafficTypeName: 'user',
+ key: 'key_user_0',
+ timestamp: 1513357833000,
+ value: 'bc2',
+ martin: 21.565,
+ vertical: ['restaurant', 'mall'],
+ GMV: true,
+ abc: 'new-val',
+ },
+ receivedAt: '2021-03-01T22:55:54.806Z',
+ rudderId: '6886eb9e-215d-4f61-a651-4b8ef18aaea3',
+ timestamp: '2021-03-01T22:55:54.771Z',
+ type: 'page',
+ userId: 'user 1',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'production',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'Viewed_1pplication_accepted_page',
+ key: 'user 1',
+ timestamp: 1614639354771,
+ environmentName: 'production',
+ trafficTypeName: 'user',
+ properties: {
+ martin: 21.565,
+ 'vertical[0]': 'restaurant',
+ 'vertical[1]': 'mall',
+ GMV: true,
+ abc: 'new-val',
+ category: 'food',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'splitio',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user123',
+ messageId: 'c73198a8-41d8-4426-9fd9-de167194d5f3',
+ rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ },
+ type: 'identify',
+ timestamp: '2020-01-21T00:21:34.208Z',
+ writeKey: '1pe7u01A7rYOrvacE6WSgI6ESXh',
+ receivedAt: '2021-04-19T14:53:18.215+05:30',
+ requestIP: '[::1]',
+ },
+ destination: {
+ Config: {
+ apiKey: 'abcde',
+ environment: 'staging',
+ trafficType: 'user',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://events.split.io/api/events',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Bearer abcde',
+ },
+ params: {},
+ body: {
+ JSON: {
+ eventTypeId: 'identify',
+ key: 'user123',
+ timestamp: 1579566094208,
+ environmentName: 'staging',
+ trafficTypeName: 'user',
+ properties: {},
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/splitio/router/data.ts b/test/integrations/destinations/splitio/router/data.ts
index 10047568128..47f8ad5cff1 100644
--- a/test/integrations/destinations/splitio/router/data.ts
+++ b/test/integrations/destinations/splitio/router/data.ts
@@ -1,10 +1,8 @@
-import { FEATURES } from '../../../../../src/v0/util/tags';
-
export const data = [
{
name: 'splitio',
description: 'Test 0',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -14,7 +12,7 @@ export const data = [
{
message: {
traits: {
- martin: 21.565000000000001,
+ martin: 21.565,
trafficTypeName: 'user',
vertical: 'restaurant',
eventTypeId: 'page_load end to end',
@@ -26,14 +24,8 @@ export const data = [
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
context: {
ip: '14.5.67.21',
- traits: {
- abc: 'new-val',
- key: 'key_user_0',
- value: '0.93',
- },
- library: {
- name: 'http',
- },
+ traits: { abc: 'new-val', key: 'key_user_0', value: '0.93' },
+ library: { name: 'http' },
},
type: 'group',
groupId: 'group1',
@@ -42,15 +34,9 @@ export const data = [
receivedAt: '2021-04-19T14:53:18.215+05:30',
requestIP: '[::1]',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
- Config: {
- apiKey: 'abcde',
- environment: 'staging',
- trafficType: 'user',
- },
+ Config: { apiKey: 'abcde', environment: 'staging', trafficType: 'user' },
},
},
],
@@ -70,10 +56,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://events.split.io/api/events',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: 'Bearer abcde',
- },
+ headers: { 'Content-Type': 'application/json', Authorization: 'Bearer abcde' },
params: {},
body: {
JSON: {
@@ -82,11 +65,7 @@ export const data = [
timestamp: 1579566094208,
environmentName: 'staging',
trafficTypeName: 'user',
- properties: {
- martin: 21.565,
- vertical: 'restaurant',
- GMV: false,
- },
+ properties: { martin: 21.565, vertical: 'restaurant', GMV: false },
},
XML: {},
JSON_ARRAY: {},
@@ -94,19 +73,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'abcde',
- environment: 'staging',
- trafficType: 'user',
- },
+ Config: { apiKey: 'abcde', environment: 'staging', trafficType: 'user' },
},
},
],
@@ -117,7 +88,7 @@ export const data = [
{
name: 'splitio',
description: 'Test 1',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -127,7 +98,7 @@ export const data = [
{
message: {
traits: {
- martin: 21.565000000000001,
+ martin: 21.565,
trafficTypeName: 'user',
eventTypeId: 'page_load end to end',
timestamp: 1513357833000,
@@ -137,13 +108,8 @@ export const data = [
rudderId: 'bda76e3e-87eb-4153-9d1e-e9c2ed48b7a5',
context: {
ip: '14.5.67.21',
- traits: {
- abc: 'new-val',
- key: 'key_user_0',
- },
- library: {
- name: 'http',
- },
+ traits: { abc: 'new-val', key: 'key_user_0' },
+ library: { name: 'http' },
},
type: 'identify',
timestamp: '2020-01-21T00:21:34.208Z',
@@ -151,15 +117,9 @@ export const data = [
receivedAt: '2021-04-19T14:53:18.215+05:30',
requestIP: '[::1]',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
- Config: {
- apiKey: 'abcde',
- environment: 'staging',
- trafficType: 'user',
- },
+ Config: { apiKey: 'abcde', environment: 'staging', trafficType: 'user' },
},
},
],
@@ -179,10 +139,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://events.split.io/api/events',
- headers: {
- 'Content-Type': 'application/json',
- Authorization: 'Bearer abcde',
- },
+ headers: { 'Content-Type': 'application/json', Authorization: 'Bearer abcde' },
params: {},
body: {
JSON: {
@@ -191,9 +148,7 @@ export const data = [
timestamp: 1579566094208,
environmentName: 'staging',
trafficTypeName: 'user',
- properties: {
- martin: 21.565,
- },
+ properties: { martin: 21.565 },
},
XML: {},
JSON_ARRAY: {},
@@ -201,19 +156,11 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- apiKey: 'abcde',
- environment: 'staging',
- trafficType: 'user',
- },
+ Config: { apiKey: 'abcde', environment: 'staging', trafficType: 'user' },
},
},
],
diff --git a/test/integrations/destinations/sprig/deleteUsers/data.ts b/test/integrations/destinations/sprig/deleteUsers/data.ts
new file mode 100644
index 00000000000..7ab5620e66c
--- /dev/null
+++ b/test/integrations/destinations/sprig/deleteUsers/data.ts
@@ -0,0 +1,217 @@
+export const data = [
+ {
+ name: 'sprig',
+ description: 'Missing api key',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: 'SPRIG',
+ userAttributes: [
+ {
+ userId: '1',
+ },
+ {
+ userId: '2',
+ },
+ ],
+ config: {
+ apiKey: undefined,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Api Key is required for user deletion',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sprig',
+ description: 'Invalid api key',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: 'SPRIG',
+ userAttributes: [
+ {
+ userId: '1',
+ },
+ {
+ userId: '2',
+ },
+ ],
+ config: {
+ apiKey: 'invalidApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 403,
+ body: [
+ {
+ statusCode: 403,
+ error: 'User deletion request failed',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sprig',
+ description: 'Too many requests',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: 'SPRIG',
+ userAttributes: [
+ {
+ userId: '1',
+ },
+ {
+ userId: '2',
+ },
+ {
+ userId: '3',
+ },
+ {
+ userId: '4',
+ },
+ {
+ userId: '5',
+ },
+ {
+ userId: '6',
+ },
+ {
+ userId: '7',
+ },
+ {
+ userId: '8',
+ },
+ {
+ userId: '9',
+ },
+ {
+ userId: '10',
+ },
+ ],
+ config: {
+ apiKey: 'testApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 429,
+ body: [
+ {
+ statusCode: 429,
+ error: 'User deletion request failed',
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'sprig',
+ description: 'Given userId is not present for user deletion',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: 'SPRIG',
+ userAttributes: [
+ {
+ userId: '9',
+ },
+ ],
+ config: {
+ apiKey: 'testApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ status: 'successful',
+ },
+ ,
+ ],
+ },
+ },
+ },
+ {
+ name: 'sprig',
+ description: 'Successful user deletion',
+ feature: 'userDeletion',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destType: 'SPRIG',
+ userAttributes: [
+ {
+ userId: '1',
+ },
+ {
+ userId: '2',
+ },
+ {
+ userId: '3',
+ },
+ ],
+ config: {
+ apiKey: 'testApiKey',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 200,
+ status: 'successful',
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/sprig/network.ts b/test/integrations/destinations/sprig/network.ts
new file mode 100644
index 00000000000..e5f2ff23b1e
--- /dev/null
+++ b/test/integrations/destinations/sprig/network.ts
@@ -0,0 +1,79 @@
+const deleteNwData = [
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.sprig.com/v2/purge/visitors',
+ data: {
+ userIds: ['1', '2'],
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'API-Key invalidApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ data: 'Forbidden',
+ status: 403,
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.sprig.com/v2/purge/visitors',
+ data: {
+ userIds: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'API-Key testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ data: 'Your application has made too many requests in too short a time.',
+ status: 429,
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.sprig.com/v2/purge/visitors',
+ data: {
+ userIds: ['9'],
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'API-Key testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ data: {
+ error: 'User deletion request failed',
+ },
+ status: 400,
+ },
+ },
+ {
+ httpReq: {
+ method: 'post',
+ url: 'https://api.sprig.com/v2/purge/visitors',
+ data: {
+ userIds: ['1', '2', '3'],
+ },
+ headers: {
+ Accept: 'application/json',
+ Authorization: 'API-Key testApiKey',
+ 'Content-Type': 'application/json',
+ },
+ },
+ httpRes: {
+ data: {
+ requestId: 'request_1',
+ },
+ status: 200,
+ },
+ },
+];
+export const networkCallsData = [...deleteNwData];
diff --git a/test/integrations/destinations/stormly/processor/data.ts b/test/integrations/destinations/stormly/processor/data.ts
new file mode 100644
index 00000000000..52356ba9e09
--- /dev/null
+++ b/test/integrations/destinations/stormly/processor/data.ts
@@ -0,0 +1,566 @@
+export const data = [
+ {
+ name: 'stormly',
+ description: 'Identify call without userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ age: 25,
+ },
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Missing required value from "userIdOnly"',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'STORMLY',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Identify call with userId, traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ channel: 'web',
+ userId: '5136633649',
+ context: {
+ traits: {
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ age: 25,
+ },
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/identify',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ timestamp: '2022-01-20T13:39:21.032Z',
+ traits: {
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ age: 25,
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Track call without userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ groupId: '91Yb32830',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Missing required value from "userIdOnly"',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'STORMLY',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Track call without groupId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ userId: '5136633649',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ timestamp: '2022-01-20T13:39:21.032Z',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Track call without properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ userId: '5136633649',
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ event: 'Product Reviewed',
+ timestamp: '2022-01-20T13:39:21.032Z',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Track call with userId, groupId and properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ userId: '5136633649',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ groupId: '91Yb32830',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ timestamp: '2022-01-20T13:39:21.032Z',
+ context: {
+ groupId: '91Yb32830',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Track call with userId, groupId (from externalId) and properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ userId: '5136633649',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ groupId: 'test-12345',
+ },
+ context: {
+ externalId: [
+ {
+ type: 'stormlyGroupId',
+ id: '91Yb32830',
+ },
+ ],
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/track',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ },
+ timestamp: '2022-01-20T13:39:21.032Z',
+ context: {
+ groupId: '91Yb32830',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'stormly',
+ description: 'Group call with userId, groupId and traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ apiKey: 'dummyApiKey',
+ },
+ ID: 'stormly123',
+ },
+ message: {
+ type: 'group',
+ userId: '5136633649',
+ traits: {
+ name: 'Initech',
+ employees: 500,
+ headquarters: 'Redwood City, California, United States',
+ ceo: 'John Doe',
+ revenue: 70000000,
+ currency: 'USD',
+ groupId: '9230AUbd2138h',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/group',
+ headers: {
+ 'Content-Type': 'application/json',
+ Authorization: 'Basic dummyApiKey',
+ },
+ params: {},
+ body: {
+ JSON: {
+ userId: '5136633649',
+ groupId: '9230AUbd2138h',
+ timestamp: '2022-01-20T13:39:21.032Z',
+ traits: {
+ name: 'Initech',
+ employees: 500,
+ headquarters: 'Redwood City, California, United States',
+ ceo: 'John Doe',
+ revenue: 70000000,
+ currency: 'USD',
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/stormly/router/data.ts b/test/integrations/destinations/stormly/router/data.ts
new file mode 100644
index 00000000000..1973173795d
--- /dev/null
+++ b/test/integrations/destinations/stormly/router/data.ts
@@ -0,0 +1,101 @@
+export const data = [
+ {
+ name: 'stormly',
+ description: 'Test 0',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: { Config: { apiKey: 'dummyApiKey' }, ID: 'stormly123' },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ channel: 'web',
+ userId: '5136633649',
+ context: { traits: { name: 'John Doe', email: 'johndoe@gmail.com', age: 25 } },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: { Config: { apiKey: 'dummyApiKey' }, ID: 'stormly123' },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ type: 'track',
+ event: 'Product Reviewed',
+ properties: {
+ review_id: '12345',
+ product_id: '123',
+ rating: 3,
+ review_body: 'Average product, expected much more.',
+ groupId: '91Yb32830',
+ },
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ destType: 'stormly',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ batchedRequest: {
+ body: {
+ FORM: {},
+ JSON: {
+ timestamp: '2022-01-20T13:39:21.032Z',
+ traits: { age: 25, email: 'johndoe@gmail.com', name: 'John Doe' },
+ userId: '5136633649',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ },
+ endpoint: 'https://rudderstack.t.stormly.com/webhook/rudderstack/identify',
+ files: {},
+ headers: { Authorization: 'Basic dummyApiKey', 'Content-Type': 'application/json' },
+ method: 'POST',
+ params: {},
+ type: 'REST',
+ version: '1',
+ },
+ destination: { Config: { apiKey: 'dummyApiKey' }, ID: 'stormly123' },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ statusCode: 200,
+ },
+ {
+ destination: { Config: { apiKey: 'dummyApiKey' }, ID: 'stormly123' },
+ batched: false,
+ error: 'Missing required value from "userIdOnly"',
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ statTags: {
+ destType: 'STORMLY',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/the_trade_desk/common.ts b/test/integrations/destinations/the_trade_desk/common.ts
new file mode 100644
index 00000000000..28f46df8297
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk/common.ts
@@ -0,0 +1,59 @@
+import { Destination } from '../../../../src/types';
+
+const destType = 'the_trade_desk';
+const destTypeInUpperCase = 'THE_TRADE_DESK';
+const advertiserId = 'test-advertiser-id';
+const dataProviderId = 'rudderstack';
+const segmentName = 'test-segment';
+
+const trackerId = 'test-trackerId';
+
+const sampleDestination: Destination = {
+ Config: {
+ advertiserId,
+ advertiserSecretKey: 'test-advertiser-secret-key',
+ dataServer: 'apac',
+ ttlInDays: 30,
+ audienceId: segmentName,
+ },
+ DestinationDefinition: {
+ Config: { cdkV2Enabled: true },
+ ID: '123',
+ Name: 'TRADEDESK',
+ DisplayName: 'Trade Desk',
+ },
+ ID: '345',
+ Name: 'Test',
+ Enabled: true,
+ WorkspaceID: '',
+ Transformations: [],
+};
+
+const sampleSource = {
+ job_id: 'test-job-id',
+ job_run_id: 'test-job-run-id',
+ task_run_id: 'test-task-run-id',
+ version: 'v1.40.4',
+};
+
+const sampleContext = {
+ destinationFields: 'daid, uid2',
+ externalId: [
+ {
+ identifierType: 'tdid',
+ type: 'THE_TRADE_DESK-test-segment',
+ },
+ ],
+ mappedToDestination: 'true',
+ sources: sampleSource,
+};
+
+export {
+ destType,
+ destTypeInUpperCase,
+ advertiserId,
+ dataProviderId,
+ segmentName,
+ sampleDestination,
+ sampleContext,
+};
diff --git a/test/integrations/destinations/the_trade_desk/delivery/data.ts b/test/integrations/destinations/the_trade_desk/delivery/data.ts
new file mode 100644
index 00000000000..320eb6dcfe2
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk/delivery/data.ts
@@ -0,0 +1,248 @@
+import {
+ destType,
+ destTypeInUpperCase,
+ advertiserId,
+ dataProviderId,
+ segmentName,
+ sampleDestination,
+} from '../common';
+
+beforeAll(() => {
+ process.env.THE_TRADE_DESK_DATA_PROVIDER_SECRET_KEY = 'mockedDataProviderSecretKey';
+});
+
+afterAll(() => {
+ delete process.env.THE_TRADE_DESK_DATA_PROVIDER_SECRET_KEY;
+});
+
+export const data = [
+ {
+ name: destType,
+ description: 'Successful delivery of Add/Remove IDs to/from Trade Desk',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ destinationConfig: sampleDestination.Config,
+ body: {
+ JSON: {
+ AdvertiserId: advertiserId,
+ DataProviderId: dataProviderId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ UID2: 'test-uid2-1',
+ },
+ {
+ DAID: 'test-daid-2',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 0,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 0,
+ },
+ ],
+ UID2: 'test-uid2-2',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {},
+ status: 200,
+ },
+ message: 'Request Processed Successfully',
+ status: 200,
+ },
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Error response from The Trade Desk due to invalid IDs',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ destinationConfig: sampleDestination.Config,
+ body: {
+ JSON: {
+ AdvertiserId: advertiserId,
+ DataProviderId: dataProviderId,
+ Items: [
+ {
+ DAID: 'test-daid',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ UID2: 'test-invalid-uid2',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: {
+ response: {
+ FailedLines: [{ ErrorCode: 'MissingUserId', Message: 'Invalid UID2, item #2' }],
+ },
+ status: 200,
+ },
+ message:
+ 'Request failed with status: 200 due to {"FailedLines":[{"ErrorCode":"MissingUserId","Message":"Invalid UID2, item #2"}]}',
+ statTags: {
+ destType: destTypeInUpperCase,
+ destinationId: 'Non-determininable',
+ errorCategory: 'network',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
+ },
+ status: 400,
+ },
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description:
+ 'Missing advertiser secret key in destination config from proxy request from server',
+ feature: 'dataDelivery',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ AdvertiserId: advertiserId,
+ DataProviderId: dataProviderId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 400,
+ body: {
+ output: {
+ destinationResponse: '',
+ message: 'Advertiser secret key is missing in destination config. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ destinationId: 'Non-determininable',
+ errorCategory: 'platform',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+ workspaceId: 'Non-determininable',
+ },
+ status: 400,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/the_trade_desk/mocks.ts b/test/integrations/destinations/the_trade_desk/mocks.ts
new file mode 100644
index 00000000000..ddcbebae880
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk/mocks.ts
@@ -0,0 +1,5 @@
+import config from '../../../../src/cdk/v2/destinations/the_trade_desk/config';
+
+export const defaultMockFns = () => {
+ jest.replaceProperty(config, 'MAX_REQUEST_SIZE_IN_BYTES', 250);
+};
diff --git a/test/integrations/destinations/the_trade_desk/network.ts b/test/integrations/destinations/the_trade_desk/network.ts
new file mode 100644
index 00000000000..ed6bdf4c7dd
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk/network.ts
@@ -0,0 +1,106 @@
+import { destType, advertiserId, dataProviderId, segmentName } from './common';
+
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://sin-data.adsrvr.org/data/advertiser',
+ data: {
+ AdvertiserId: advertiserId,
+ DataProviderId: dataProviderId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ UID2: 'test-uid2-1',
+ },
+ {
+ DAID: 'test-daid-2',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 0,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: 'test-segment',
+ TTLInMinutes: 0,
+ },
+ ],
+ UID2: 'test-uid2-2',
+ },
+ ],
+ },
+ params: { destination: destType },
+ headers: {
+ TtdSignature: '8LqGha6I7e3duvhngEvhXoTden0=',
+ 'TtdSignature-dp': 'tLpf4t5xebsr9Xcqp9PjhOJX7p0=',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: {},
+ status: 200,
+ statusText: 'OK',
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://sin-data.adsrvr.org/data/advertiser',
+ data: {
+ AdvertiserId: advertiserId,
+ DataProviderId: dataProviderId,
+ Items: [
+ {
+ DAID: 'test-daid',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ UID2: 'test-invalid-uid2',
+ },
+ ],
+ },
+ params: { destination: destType },
+ headers: {
+ TtdSignature: '9EIeoIGkRkV5oJHfGtoq1lwQl+M=',
+ 'TtdSignature-dp': 'ZpHWNd1uGvQAv/QW685SQT8tl1I=',
+ 'Content-Type': 'application/json',
+ 'User-Agent': 'RudderLabs',
+ },
+ method: 'POST',
+ },
+ httpRes: {
+ data: { FailedLines: [{ ErrorCode: 'MissingUserId', Message: 'Invalid UID2, item #2' }] },
+ status: 200,
+ statusText: 'Ok',
+ },
+ },
+];
diff --git a/test/integrations/destinations/the_trade_desk/router/data.ts b/test/integrations/destinations/the_trade_desk/router/data.ts
new file mode 100644
index 00000000000..f095f561dbd
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk/router/data.ts
@@ -0,0 +1,982 @@
+import { overrideDestination } from '../../../testUtils';
+import { defaultMockFns } from '../mocks';
+import {
+ destType,
+ destTypeInUpperCase,
+ advertiserId,
+ dataProviderId,
+ segmentName,
+ sampleDestination,
+ sampleContext,
+} from '../common';
+
+export const data = [
+ {
+ name: destType,
+ description: 'Add IDs to the segment',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-2',
+ UID2: null,
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '2',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ UID2: 'test-uid2-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ DAID: 'test-daid-2',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: destType,
+ description:
+ 'Add/Remove IDs to/from the segment and split into multiple requests based on size',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'delete',
+ fields: {
+ DAID: 'test-daid-2',
+ UID2: 'test-uid2-2',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '2',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ UID2: 'test-uid2-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ DAID: 'test-daid-2',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 0,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ UID2: 'test-uid2-2',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 0,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: destType,
+ description:
+ 'Missing segment name (audienceId) in the config (segment name will be populated from vdm)',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: overrideDestination(sampleDestination, { audienceId: '' }),
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-2',
+ UID2: 'test-uid2-2',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '2',
+ },
+ destination: overrideDestination(sampleDestination, { audienceId: '' }),
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ ],
+ statusCode: 400,
+ error: 'Segment name/Audience ID is not present. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Missing advertiser ID in the config',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: overrideDestination(sampleDestination, { advertiserId: '' }),
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-2',
+ UID2: 'test-uid2-2',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: overrideDestination(sampleDestination, { advertiserId: '' }),
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ metadata: [
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
+ ],
+ statusCode: 400,
+ error: 'Advertiser ID is not present. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Missing advertiser secret key in the config',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: overrideDestination(sampleDestination, { advertiserSecretKey: '' }),
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ statusCode: 400,
+ error: 'Advertiser Secret Key is not present. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'TTL is out of range',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: overrideDestination(sampleDestination, { ttlInDays: 190 }),
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ statusCode: 400,
+ error: 'TTL is out of range. Allowed values are 0 to 180 days',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Invalid action type',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ UID2: 'test-uid2-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'update',
+ fields: {
+ DAID: 'test-daid-2',
+ UID2: null,
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '2',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 2,
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ {
+ UID2: 'test-uid2-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: sampleDestination,
+ },
+ {
+ batched: false,
+ metadata: [{ jobId: 2 }],
+ statusCode: 400,
+ error:
+ 'Invalid action type. You can only add or remove IDs from the audience/segment',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: destType,
+ description: 'Empty fields in the message',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {},
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '2',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 2,
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 2,
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: sampleDestination,
+ },
+ {
+ batched: false,
+ metadata: [{ jobId: 1 }],
+ statusCode: 400,
+ error: '`fields` cannot be empty',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: destType,
+ description: '`fields` is missing',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batched: false,
+ metadata: [{ jobId: 1 }],
+ statusCode: 400,
+ error: '`fields` cannot be empty',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'router',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: destType,
+ description: 'Batch call with different event types',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ type: 'record',
+ action: 'insert',
+ fields: {
+ DAID: 'test-daid-1',
+ },
+ channel: 'sources',
+ context: sampleContext,
+ recordId: '1',
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ {
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ age: 25,
+ },
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 2,
+ },
+ },
+ ],
+ destType,
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://sin-data.adsrvr.org/data/advertiser',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ DataProviderId: dataProviderId,
+ AdvertiserId: advertiserId,
+ Items: [
+ {
+ DAID: 'test-daid-1',
+ Data: [
+ {
+ Name: segmentName,
+ TTLInMinutes: 43200,
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: sampleDestination,
+ },
+ {
+ batched: false,
+ metadata: [{ jobId: 2 }],
+ statusCode: 400,
+ error: 'Event type identify is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'THE_TRADE_DESK',
+ module: 'destination',
+ implementation: 'cdkV2',
+ feature: 'router',
+ },
+ destination: sampleDestination,
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/the_trade_desk_real_time_conversions/common.ts b/test/integrations/destinations/the_trade_desk_real_time_conversions/common.ts
new file mode 100644
index 00000000000..9b79a7bcbd5
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk_real_time_conversions/common.ts
@@ -0,0 +1,91 @@
+import { Destination } from '../../../../src/types';
+
+const destType = 'the_trade_desk_real_time_conversions';
+const destTypeInUpperCase = 'THE_TRADE_DESK_REAL_TIME_CONVERSIONS';
+const advertiserId = 'test-advertiser-id';
+const trackerId = 'test-trackerId';
+const sampleDestination: Destination = {
+ Config: {
+ advertiserId,
+ trackerId,
+ },
+ Enabled: true,
+ ID: '123',
+ Name: 'TRADE_DESK_REAL_TIME_CONVERSIONS',
+ WorkspaceID: 'test-workspace-id',
+ Transformations: [],
+ DestinationDefinition: {
+ ID: '123',
+ DisplayName: 'Trade Desk',
+ Name: 'TRADE_DESK',
+ Config: { cdkV2Enabled: true },
+ },
+};
+
+const sampleContextForConversion = {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs Android SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.5',
+ },
+ device: {
+ adTrackingEnabled: true,
+ advertisingId: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ externalId: [
+ {
+ type: 'daid',
+ id: 'test-daid',
+ },
+ ],
+ ip: '0.0.0.0',
+ page: {
+ referrer: 'https://docs.rudderstack.com/destinations/trade_desk',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.5',
+ },
+ locale: 'en-GB',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
+};
+
+const integrationObject = {
+ All: true,
+ THE_TRADE_DESK: {
+ policies: ['LDU'],
+ region: 'US-CA',
+ privacy_settings: [
+ {
+ privacy_type: 'GDPR',
+ is_applicable: 1,
+ consent_string: 'ok',
+ },
+ ],
+ },
+};
+
+export {
+ destType,
+ destTypeInUpperCase,
+ advertiserId,
+ trackerId,
+ sampleDestination,
+ sampleContextForConversion,
+ integrationObject,
+};
diff --git a/test/integrations/destinations/the_trade_desk_real_time_conversions/processor/data.ts b/test/integrations/destinations/the_trade_desk_real_time_conversions/processor/data.ts
new file mode 100644
index 00000000000..264c7600883
--- /dev/null
+++ b/test/integrations/destinations/the_trade_desk_real_time_conversions/processor/data.ts
@@ -0,0 +1,984 @@
+import { overrideDestination } from '../../../testUtils';
+import {
+ destType,
+ destTypeInUpperCase,
+ advertiserId,
+ trackerId,
+ sampleDestination,
+ sampleContextForConversion,
+ integrationObject,
+} from '../common';
+
+export const data = [
+ {
+ name: destType,
+ description: 'Missing advertiser ID in the config',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'custom event abc',
+ properties: {
+ key1: 'value1',
+ value: 25,
+ product_id: 'prd123',
+ key2: true,
+ test: 'test123',
+ },
+ },
+ destination: overrideDestination(sampleDestination, { advertiserId: '' }),
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Advertiser ID is not present. Aborting: Workflow: procWorkflow, Step: validateConfig, ChildStep: undefined, OriginalError: Advertiser ID is not present. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'processor',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Tracker id is not present',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'custom event abc',
+ properties: {
+ key1: 'value1',
+ value: 25,
+ product_id: 'prd123',
+ key2: true,
+ test: 'test123',
+ },
+ },
+ destination: overrideDestination(sampleDestination, { trackerId: '' }),
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Tracking Tag ID is not present. Aborting: Workflow: procWorkflow, Step: validateConfig, ChildStep: undefined, OriginalError: Tracking Tag ID is not present. Aborting',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'processor',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Unsupported event type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'identify',
+ context: {
+ traits: {
+ name: 'John Doe',
+ email: 'johndoe@gmail.com',
+ age: 25,
+ },
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ 'Event type identify is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Event type identify is not supported',
+ statTags: {
+ destType: destTypeInUpperCase,
+ implementation: 'cdkV2',
+ feature: 'processor',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Product Added',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Product Added',
+ messageId: 'messageId123',
+ context: sampleContextForConversion,
+ properties: {
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ category: 'Games',
+ name: 'Cones of Dunshire',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ price: 49.99,
+ quantity: 5,
+ coupon: 'PREORDER15',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.webp',
+ key1: 'value1',
+ },
+ integrations: integrationObject,
+ },
+ destination: overrideDestination(sampleDestination, {
+ customProperties: [
+ {
+ rudderProperty: 'properties.key1',
+ tradeDeskProperty: 'td1',
+ },
+ {
+ rudderProperty: 'properties.key2',
+ tradeDeskProperty: 'td2',
+ },
+ ],
+ }),
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ event_name: 'addtocart',
+ value: 249.95000000000002,
+ adid: 'test-daid',
+ adid_type: 'DAID',
+ client_ip: '0.0.0.0',
+ referrer_url: 'https://docs.rudderstack.com/destinations/trade_desk',
+ imp: 'messageId123',
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ qty: 5,
+ price: 49.99,
+ },
+ ],
+ td1: 'value1',
+ category: 'Games',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ coupon: 'PREORDER15',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.webp',
+ data_processing_option: {
+ policies: ['LDU'],
+ region: 'US-CA',
+ },
+ privacy_settings: [
+ {
+ privacy_type: 'GDPR',
+ is_applicable: 1,
+ consent_string: 'ok',
+ },
+ ],
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Product Viewed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Product Viewed',
+ properties: {
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ category: 'Games',
+ name: 'Cones of Dunshire',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ price: 49.99,
+ quantity: 5,
+ coupon: 'PREORDER15',
+ currency: 'USD',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.webp',
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ currency: 'USD',
+ event_name: 'viewitem',
+ value: 249.95000000000002,
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ qty: 5,
+ price: 49.99,
+ },
+ ],
+ category: 'Games',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ coupon: 'PREORDER15',
+ position: 1,
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.webp',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Product Added to Wishlist',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Product Added to Wishlist',
+ properties: {
+ wishlist_id: '74fkdjfl0jfdkdj29j030',
+ wishlist_name: 'New Games',
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ category: 'Games',
+ name: 'Cones of Dunshire',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ price: 49.99,
+ quantity: 1,
+ coupon: 'PREORDER15',
+ position: 1,
+ url: 'https://www.site.com/product/path',
+ image_url: 'https://www.site.com/product/path.jpg',
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ event_name: 'wishlistitem',
+ value: 49.99,
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ qty: 1,
+ price: 49.99,
+ },
+ ],
+ wishlist_id: '74fkdjfl0jfdkdj29j030',
+ wishlist_name: 'New Games',
+ category: 'Games',
+ brand: 'Wyatt Games',
+ variant: 'expansion pack',
+ coupon: 'PREORDER15',
+ position: 1,
+ url: 'https://www.site.com/product/path',
+ image_url: 'https://www.site.com/product/path.jpg',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Cart Viewed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Cart Viewed',
+ properties: {
+ cart_id: '6b2c6f5aecf86a4ae77358ae3',
+ products: [
+ {
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ name: 'Cones of Dunshire',
+ price: 49.99,
+ position: 5,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: '577c6f5d5cf86a4c7735ba03',
+ sku: '3309-483-2201',
+ name: 'Five Crowns',
+ price: 5.99,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ event_name: 'viewcart',
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ price: 49.99,
+ position: 5,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ item_code: '577c6f5d5cf86a4c7735ba03',
+ name: 'Five Crowns',
+ price: 5.99,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ cart_id: '6b2c6f5aecf86a4ae77358ae3',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Checkout Started',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Checkout Started',
+ properties: {
+ order_id: '40684e8f0eaf000000000000',
+ affiliation: 'Vandelay Games',
+ value: 52,
+ revenue: 50.0,
+ shipping: 4,
+ tax: 3,
+ discount: 5,
+ coupon: 'NEWCUST5',
+ currency: 'USD',
+ products: [
+ {
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ name: 'Cones of Dunshire',
+ price: 40,
+ position: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: '577c6f5d5cf86a4c7735ba03',
+ sku: '3309-483-2201',
+ name: 'Five Crowns',
+ price: 5,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ currency: 'USD',
+ order_id: '40684e8f0eaf000000000000',
+ event_name: 'startcheckout',
+ value: 50,
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ price: 40,
+ position: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ item_code: '577c6f5d5cf86a4c7735ba03',
+ name: 'Five Crowns',
+ price: 5,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ affiliation: 'Vandelay Games',
+ shipping: 4,
+ tax: 3,
+ discount: 5,
+ coupon: 'NEWCUST5',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Order Completed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'Order Completed',
+ properties: {
+ checkout_id: '70324a1f0eaf000000000000',
+ order_id: '40684e8f0eaf000000000000',
+ affiliation: 'Vandelay Games',
+ total: 52.0,
+ subtotal: 45.0,
+ revenue: 50.0,
+ shipping: 4.0,
+ tax: 3.0,
+ discount: 5.0,
+ coupon: 'NEWCUST5',
+ currency: 'USD',
+ products: [
+ {
+ product_id: '622c6f5d5cf86a4c77358033',
+ sku: '8472-998-0112',
+ name: 'Cones of Dunshire',
+ price: 40,
+ position: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: '577c6f5d5cf86a4c7735ba03',
+ sku: '3309-483-2201',
+ name: 'Five Crowns',
+ price: 5,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ },
+ },
+ destination: sampleDestination,
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ currency: 'USD',
+ order_id: '40684e8f0eaf000000000000',
+ event_name: 'purchase',
+ value: 50,
+ items: [
+ {
+ item_code: '622c6f5d5cf86a4c77358033',
+ name: 'Cones of Dunshire',
+ price: 40,
+ position: 1,
+ category: 'Games',
+ url: 'https://www.website.com/product/path',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ item_code: '577c6f5d5cf86a4c7735ba03',
+ name: 'Five Crowns',
+ price: 5,
+ position: 2,
+ category: 'Games',
+ },
+ ],
+ checkout_id: '70324a1f0eaf000000000000',
+ affiliation: 'Vandelay Games',
+ total: 52.0,
+ subtotal: 45.0,
+ shipping: 4.0,
+ tax: 3.0,
+ discount: 5.0,
+ coupon: 'NEWCUST5',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Custom event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'custom event abc',
+ properties: {
+ key1: 'value1',
+ value: 25,
+ product_id: 'prd123',
+ key2: true,
+ test: 'test123',
+ },
+ },
+ destination: overrideDestination(sampleDestination, {
+ customProperties: [
+ {
+ rudderProperty: 'properties.key1',
+ tradeDeskProperty: 'td1',
+ },
+ {
+ rudderProperty: 'properties.key2',
+ tradeDeskProperty: 'td2',
+ },
+ ],
+ }),
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ event_name: 'custom event abc',
+ value: 25,
+ product_id: 'prd123',
+ test: 'test123',
+ td1: 'value1',
+ td2: true,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: destType,
+ description: 'Mapped standard trade desk event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 'custom event abc',
+ properties: {
+ key1: 'value1',
+ value: 25,
+ product_id: 'prd123',
+ key2: true,
+ test: 'test123',
+ },
+ },
+ destination: overrideDestination(sampleDestination, {
+ eventsMapping: [
+ {
+ from: 'custom event abc',
+ to: 'direction',
+ },
+ ],
+ }),
+ metadata: {
+ jobId: 1,
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://insight.adsrvr.org/track/realtimeconversion',
+ headers: { 'Content-Type': 'application/json' },
+ params: {},
+ body: {
+ JSON: {
+ data: [
+ {
+ tracker_id: trackerId,
+ adv: advertiserId,
+ event_name: 'direction',
+ value: 25,
+ product_id: 'prd123',
+ test: 'test123',
+ key1: 'value1',
+ key2: true,
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/tiktok_ads/dataDelivery/business.ts b/test/integrations/destinations/tiktok_ads/dataDelivery/business.ts
new file mode 100644
index 00000000000..895188fa3f6
--- /dev/null
+++ b/test/integrations/destinations/tiktok_ads/dataDelivery/business.ts
@@ -0,0 +1,249 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+
+export const commonHeaderPart = {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+};
+
+export const params = {
+ destination: 'tiktok_ads',
+};
+
+export const statTags = {
+ destType: 'TIKTOK_ADS',
+ errorCategory: 'network',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ errorType: 'aborted',
+ feature: 'dataDelivery',
+ implementation: 'native',
+ module: 'destination',
+};
+
+export const commonParts = {
+ context: {
+ ad: {
+ callback: '123ATXSfe',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ external_id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone_number: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ ip: '13.57.97.131',
+ user_agent: 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ partner_name: 'RudderStack',
+ event: 'CompletePayment',
+ event_id: '1616318632825_357',
+ timestamp: '2020-09-17T19:49:27Z',
+};
+
+export const V1BusinessTestScenarion: ProxyV1TestData[] = [
+ {
+ id: 'tiktok_ads_business_0',
+ name: 'tiktok_ads',
+ description: '[Business]:: Test for tiktok_ads with multiple contents in properties',
+ feature: 'dataDelivery',
+ scenario: 'business',
+ successCriteria: 'Should return 200 after successfully sending the request',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ headers: {
+ ...commonHeaderPart,
+ 'test-dest-response-key': 'successResponse',
+ },
+ params,
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.2/pixel/batch/',
+ JSON: {
+ ...commonParts,
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 200,
+ message: '[TIKTOK_ADS Response Handler] - Request Processed Successfully',
+ response: [
+ {
+ error: '{"code":0,"message":"OK"}',
+ statusCode: 200,
+ metadata: generateMetadata(1234),
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'tiktok_ads_business_1',
+ name: 'tiktok_ads',
+ description:
+ '[Business]:: Test for tiktok_ads with multiple contents in properties but content_id is not a string',
+ feature: 'dataDelivery',
+ scenario: 'business',
+ successCriteria: 'Should return 400 after successfully processing the request with code 40002',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ params,
+ headers: {
+ ...commonHeaderPart,
+ 'test-dest-response-key': 'invalidDataTypeResponse',
+ },
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.2/pixel/batch/',
+ JSON: {
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: 1077218,
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: 1197218,
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ ...commonParts,
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Request failed with status: 40002',
+ response: [
+ {
+ statusCode: 400,
+ error:
+ '{"code":40002,"message":"Batch.0.properties.contents.0.content_id: Not a valid string"}',
+ metadata: generateMetadata(1234),
+ },
+ ],
+ statTags,
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'tiktok_ads_business_2',
+ name: 'tiktok_ads',
+ description: '[Business]:: Test for tiktok_ads with wrong pixel code',
+ feature: 'dataDelivery',
+ scenario: 'business',
+ successCriteria: 'Should return 400 after successfully processing the request with code 40001',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ params,
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.2/pixel/batch/',
+ headers: {
+ ...commonHeaderPart,
+ 'test-dest-response-key': 'invalidPermissionsResponse',
+ },
+ JSON: {
+ ...commonParts,
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: 1077218,
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: 1197218,
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 400,
+ message: 'Request failed with status: 40001',
+ response: [
+ {
+ statusCode: 400,
+ error:
+ '{"code":40001,"message":"No permission to operate pixel code: BU35TSQHT2A1QT375OMG. You must be an admin or operator of this advertiser account."}',
+ metadata: generateMetadata(1234),
+ },
+ ],
+ statTags,
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/tiktok_ads/dataDelivery/data.ts b/test/integrations/destinations/tiktok_ads/dataDelivery/data.ts
index 810e1de4756..399fd26649a 100644
--- a/test/integrations/destinations/tiktok_ads/dataDelivery/data.ts
+++ b/test/integrations/destinations/tiktok_ads/dataDelivery/data.ts
@@ -1,8 +1,10 @@
import { AxiosError } from 'axios';
import MockAxiosAdapter from 'axios-mock-adapter';
import lodash from 'lodash';
+import { V1BusinessTestScenarion } from './business';
+import { v1OtherScenarios } from './other';
-export const data = [
+const oldV0TestCases = [
{
name: 'tiktok_ads',
description: 'Test 0',
@@ -670,3 +672,5 @@ export const data = [
},
},
];
+
+export const data = [...oldV0TestCases, ...V1BusinessTestScenarion, ...v1OtherScenarios];
diff --git a/test/integrations/destinations/tiktok_ads/dataDelivery/other.ts b/test/integrations/destinations/tiktok_ads/dataDelivery/other.ts
new file mode 100644
index 00000000000..0675ebcd051
--- /dev/null
+++ b/test/integrations/destinations/tiktok_ads/dataDelivery/other.ts
@@ -0,0 +1,175 @@
+import { ProxyV1TestData } from '../../../testTypes';
+import { generateMetadata, generateProxyV1Payload } from '../../../testUtils';
+import { commonHeaderPart, params, statTags, commonParts } from './business';
+
+const commonProperties = {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: 1077218,
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: 1197218,
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+};
+
+export const v1OtherScenarios: ProxyV1TestData[] = [
+ {
+ id: 'tiktok_ads_other_0',
+ name: 'tiktok_ads',
+ description: '[Other]:: Test for tiktok_ads when rate limit is reached',
+ feature: 'dataDelivery',
+ scenario: 'other',
+ successCriteria: 'Should return 429 after successfully sending the request',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ params,
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.2/pixel/batch/',
+ headers: { ...commonHeaderPart, 'test-dest-response-key': 'tooManyRequests' },
+ JSON: {
+ ...commonParts,
+ properties: commonProperties,
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 429,
+ message: 'Request failed with status: 40100',
+ response: [
+ {
+ error: '{"code":40100,"message":"Too many requests. Please retry in some time."}',
+ statusCode: 429,
+ metadata: generateMetadata(1234),
+ },
+ ],
+ statTags: {
+ ...statTags,
+ errorType: 'throttled',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'tiktok_ads_other_1',
+ name: 'tiktok_ads',
+ description: '[Other]:: Test for tiktok_ads when request failed due to bad gateway',
+ feature: 'dataDelivery',
+ scenario: 'other',
+ successCriteria: 'Should return 500 status code after successfully sending the request',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ params,
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.2/pixel/batch/',
+ headers: { ...commonHeaderPart, 'test-dest-response-key': '502-BadGateway' },
+ JSON: {
+ ...commonParts,
+ properties: commonProperties,
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 502,
+ message: 'Request failed with status: 502',
+ response: [
+ {
+ error:
+ '"\\r\\n502 Bad Gateway\\r\\n\\r\\n502 Bad Gateway
\\r\\n
nginx\\r\\n\\r\\n\\r\\n"',
+ statusCode: 502,
+ metadata: generateMetadata(1234),
+ },
+ ],
+ statTags: {
+ ...statTags,
+ errorType: 'retryable',
+ },
+ },
+ },
+ },
+ },
+ },
+ {
+ id: 'tiktok_ads_other_2',
+ name: 'tiktok_ads',
+ description:
+ '[Other]:: Test for tiktok_ads when request failed due to unavailability of service',
+ feature: 'dataDelivery',
+ scenario: 'other',
+ successCriteria: 'Should return 500 status code after successfully sending the request',
+ module: 'destination',
+ version: 'v1',
+ input: {
+ request: {
+ body: generateProxyV1Payload(
+ {
+ headers: commonHeaderPart,
+ params,
+ endpoint: 'https://random_test_url/test_for_service_not_available',
+ JSON: {
+ ...commonParts,
+ properties: commonProperties,
+ },
+ },
+ [generateMetadata(1234)],
+ ),
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: {
+ status: 503,
+ message: 'Request failed with status: 503',
+ response: [
+ {
+ error:
+ '{"error":{"message":"Service Unavailable","description":"The server is currently unable to handle the request due to temporary overloading or maintenance of the server. Please try again later."}}',
+ statusCode: 503,
+ metadata: generateMetadata(1234),
+ },
+ ],
+ statTags: {
+ ...statTags,
+ errorType: 'retryable',
+ },
+ },
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/tiktok_ads/mocks.ts b/test/integrations/destinations/tiktok_ads/mocks.ts
new file mode 100644
index 00000000000..a5d8fc4a638
--- /dev/null
+++ b/test/integrations/destinations/tiktok_ads/mocks.ts
@@ -0,0 +1,5 @@
+import config from '../../../../src/v0/destinations/tiktok_ads/config';
+
+export const defaultMockFns = () => {
+ jest.replaceProperty(config, 'maxBatchSizeV2', 3);
+};
diff --git a/test/integrations/destinations/tiktok_ads/processor/data.ts b/test/integrations/destinations/tiktok_ads/processor/data.ts
index 46128f46b8d..d0447da43cf 100644
--- a/test/integrations/destinations/tiktok_ads/processor/data.ts
+++ b/test/integrations/destinations/tiktok_ads/processor/data.ts
@@ -89,7 +89,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -114,7 +114,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -256,7 +256,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -281,7 +281,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'InitiateCheckout',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -418,7 +418,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -443,7 +443,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'AddToWishlist',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -581,7 +581,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -697,7 +697,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -722,7 +722,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'AddToWishlist',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -863,7 +863,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -888,7 +888,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'AddToWishlist',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -1028,7 +1028,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: true,
},
},
@@ -1053,7 +1053,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'Subscribe',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -1192,7 +1192,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1217,7 +1217,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'AddPaymentInfo',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -1355,7 +1355,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1369,7 +1369,7 @@ export const data = [
body: [
{
statusCode: 400,
- error: 'Event name is required',
+ error: 'Either event name is not present or it is not a string',
statTags: {
errorCategory: 'dataValidation',
errorType: 'instrumentation',
@@ -1467,7 +1467,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1580,7 +1580,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1605,7 +1605,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'AddPaymentInfo',
event_id: '1616318632825_357',
properties: {
@@ -1743,7 +1743,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1768,7 +1768,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'SubmitForm',
event_id: '16163186328257',
timestamp: '2020-09-17T19:49:27Z',
@@ -1894,7 +1894,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -1919,7 +1919,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'SubmitForm',
event_id: '16163186328257',
timestamp: '2020-09-17T19:49:27Z',
@@ -2040,7 +2040,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -2065,7 +2065,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'Contact',
event_id: '16163186328257',
timestamp: '2020-09-17T19:49:27Z',
@@ -2204,7 +2204,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -2318,7 +2318,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -2343,7 +2343,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -2482,7 +2482,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -2507,7 +2507,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'PlaceAnOrder',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -2650,7 +2650,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: true,
},
},
@@ -2675,7 +2675,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'Subscribe',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -2819,7 +2819,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: true,
},
},
@@ -2844,7 +2844,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'Subscribe',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -2984,7 +2984,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -3009,7 +3009,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -3148,7 +3148,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
eventsToStandard: [
{
@@ -3187,7 +3187,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'download',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -3249,7 +3249,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'search',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -3388,7 +3388,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
eventsToStandard: [
{
@@ -3508,7 +3508,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
eventsToStandard: [
{
@@ -3543,7 +3543,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'download',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -3681,7 +3681,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: true,
eventsToStandard: [
{
@@ -3716,7 +3716,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'download',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -3854,7 +3854,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: true,
eventsToStandard: [
{
@@ -3889,7 +3889,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'download',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4048,7 +4048,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -4073,7 +4073,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4219,7 +4219,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -4244,7 +4244,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4394,7 +4394,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -4419,7 +4419,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4541,6 +4541,7 @@ export const data = [
category: 'Games',
url: 'https://www.website.com/product/path',
image_url: 'https://www.website.com/product/path.jpg',
+ brand: 'brand_name',
},
{
product_id: '345',
@@ -4573,7 +4574,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
},
},
@@ -4598,7 +4599,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'CompletePayment',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4750,7 +4751,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
sendCustomEvents: true,
},
@@ -4776,7 +4777,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: '{{PIXEL-CODE}}',
event: 'custom_event',
event_id: '1616318632825_357',
timestamp: '2020-09-17T19:49:27Z',
@@ -4922,7 +4923,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: '{{PIXEL-CODE}}',
hashUserProperties: false,
sendCustomEvents: false,
},
@@ -4952,4 +4953,2069 @@ export const data = [
},
},
},
+ {
+ name: 'tiktok_ads',
+ description: 'Test 31 -> Camel Case Custom Event Pass',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'customEvent',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ context: {
+ ad: {
+ callback: '123ATXSfe',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone_number:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/pixel/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ pixel_code: '{{PIXEL-CODE}}',
+ event: 'customEvent',
+ event_id: '1616318632825_357',
+ timestamp: '2020-09-17T19:49:27Z',
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ context: {
+ ad: {
+ callback: 'dummyclickId',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone_number:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ partner_name: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 32 -> V2 -> Camel Case Custom Event Pass',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'customEvent',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ url: 'http://demo.mywebsite.com/purchase',
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'customEvent',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description:
+ 'Test 33 -> V2 -> Event mapped to one standard event with contents present as it is in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'download',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 34 -> V2 -> Event mapped to multiple standard events and no phone',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ {
+ from: 'AddToCart',
+ to: 'AddToWishlist',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'download',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ {
+ event: 'AddToWishlist',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 35 -> V2 -> array of external_id and phone number',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: [
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b5',
+ '1f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ],
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ phone: ['+12345432', '+134234325'],
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ {
+ from: 'AddToCart',
+ to: 'AddToWishlist',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'download',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone: ['+12345432', '+134234325'],
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id: [
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b5',
+ '1f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ],
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ {
+ event: 'AddToWishlist',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone: ['+12345432', '+134234325'],
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id: [
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b5',
+ '1f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ],
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 36-> V2 -> Event not standard and no custom events allowed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ locale: 'en-US',
+ ip: '13.57.97.131',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'Product Added to Wishlist1',
+ properties: {
+ eventId: '1616318632825_357',
+ testEventCode: 'sample rudder test_event_code',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone_number:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ },
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error:
+ 'Event name (product added to wishlist1) is not valid, must be mapped to one of standard events',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 37-> V2 -> No Message type',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ event: 'Product Added to Wishlist1',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 38-> V2 -> Event not found',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event name is required',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 39-> V2 -> Access Token not found',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ pixelCode: 'configuration',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Access Token not found. Aborting',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 40-> V2 -> Pixel Code not found. Aborting',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Pixel Code not found. Aborting',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 41 -> V2 -> One of standard event',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'abc@xyz.com',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: [
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b5',
+ '1f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ],
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'viewcontent',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ phone: ['+12345432', '+134234325'],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: true,
+ sendCustomEvents: false,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ {
+ from: 'AddToCart',
+ to: 'AddToWishlist',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'ViewContent',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ email: 'ee278943de84e5d6243578ee1a1057bcce0e50daad9755f45dfa64b60b13bc5d',
+ external_id: [
+ '3e0c7a51acd326b87f29596e38c22cbeb732df37bc5c8f5f524c14b55d3472db',
+ 'f8be04e62f5a3eba31c8b9380843666f28f3ab5f44a380f47fac04e9ce7b2168',
+ ],
+ ip: '13.57.97.131',
+ phone: [
+ '49a15e38bdc2572d362a924c2ddd100baed0fe29db44270d3700fcef03b18c39',
+ '5a6a7a09b18278e220312ce26d711ff7c8263d0965ee3b1d26b1b6f0ac7e71b3',
+ ],
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 42 -> V2 -> One of standard event and contents from products',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'abc@xyz.com',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: [
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b5',
+ '1f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ],
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'viewcontent',
+ properties: {
+ order_id: 1234,
+ shop_id: 4567,
+ description: 'Viewed games',
+ query: 'New age games',
+ contentType: 'product_group',
+ eventId: '1616318632825_357',
+ products: [
+ {
+ product_id: 123,
+ sku: 'G-32',
+ name: 'Monopoly',
+ price: 14,
+ quantity: 1,
+ contentType: 'product_group',
+ category: 'Games',
+ brand: 'adidas',
+ image_url: 'https://www.website.com/product/path.jpg',
+ },
+ {
+ product_id: 345,
+ sku: 'F-32',
+ name: 'UNO',
+ price: 3.45,
+ contentType: 'product_group',
+ quantity: 2,
+ },
+ ],
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ phone: ['+12345432', '+134234325'],
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: true,
+ sendCustomEvents: false,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ {
+ from: 'AddToCart',
+ to: 'AddToWishlist',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'ViewContent',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ order_id: '1234',
+ shop_id: '4567',
+ description: 'Viewed games',
+ query: 'New age games',
+ content_type: 'product_group',
+ contents: [
+ {
+ price: 14,
+ quantity: 1,
+ content_category: 'Games',
+ content_id: '123',
+ content_name: 'Monopoly',
+ },
+ {
+ price: 3.45,
+ quantity: 2,
+ content_id: '345',
+ content_name: 'UNO',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ email: 'ee278943de84e5d6243578ee1a1057bcce0e50daad9755f45dfa64b60b13bc5d',
+ external_id: [
+ '3e0c7a51acd326b87f29596e38c22cbeb732df37bc5c8f5f524c14b55d3472db',
+ 'f8be04e62f5a3eba31c8b9380843666f28f3ab5f44a380f47fac04e9ce7b2168',
+ ],
+ ip: '13.57.97.131',
+ phone: [
+ '49a15e38bdc2572d362a924c2ddd100baed0fe29db44270d3700fcef03b18c39',
+ '5a6a7a09b18278e220312ce26d711ff7c8263d0965ee3b1d26b1b6f0ac7e71b3',
+ ],
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 43 -> V2 -> Contents present as object in properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ contents: {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ clickId: 'dummyclickId',
+ currency: 'USD',
+ value: 46,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ eventsToStandard: [
+ {
+ from: 'addToCart',
+ to: 'download',
+ },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'download',
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ content_type: 'product',
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ ],
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 44 -> Events 2.0 Event type identify not suported',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'identify',
+ event: 'contact',
+ properties: {},
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type identify is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description:
+ 'Test 45-> events 1.0 build contents from properties.product.$ where length of prodicts is 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ products: [],
+ currency: 'USD',
+ value: 46,
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone_number:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ },
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/pixel/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ pixel_code: '{{PIXEL-CODE}}',
+ event: 'CompletePayment',
+ event_id: '1616318632825_357',
+ timestamp: '2020-09-17T19:49:27Z',
+ properties: {
+ currency: 'USD',
+ value: 46,
+ contents: [],
+ },
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ phone_number:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ partner_name: 'RudderStack',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 46 -> V2 -> Event with no properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ traits: {
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [
+ {
+ type: 'tiktokExternalId',
+ id: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ ],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'customEvent',
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ destination: {
+ Config: {
+ version: 'v2',
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ sendCustomEvents: true,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source: 'web',
+ event_source_id: '{{PIXEL-CODE}}',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event: 'customEvent',
+ event_id: '84e26acc-56a5-4835-8233-591137fca468',
+ event_time: 1600372167,
+ properties: { content_type: 'product' },
+ user: {
+ locale: 'en-US',
+ email: 'dd6ff77f54e2106661089bae4d40cdb600979bf7edc9eb65c0942ba55c7c2d7f',
+ external_id:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ },
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Testing if the event name provided as a string or not',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ type: 'track',
+ event: 123,
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: '{{PIXEL-CODE}}',
+ hashUserProperties: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Either event name is not present or it is not a string',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
];
diff --git a/test/integrations/destinations/tiktok_ads/router/data.ts b/test/integrations/destinations/tiktok_ads/router/data.ts
index a8c233c7a82..7246b8c04af 100644
--- a/test/integrations/destinations/tiktok_ads/router/data.ts
+++ b/test/integrations/destinations/tiktok_ads/router/data.ts
@@ -1,9 +1,9 @@
import { FEATURES } from '../../../../../src/v0/util/tags';
-
+import { defaultMockFns } from '../mocks';
export const data = [
{
name: 'tiktok_ads',
- description: 'Test 0',
+ description: 'Test 0 -> Events 1.0 Multiple events in single batch',
feature: FEATURES.ROUTER,
module: 'destination',
version: 'v0',
@@ -22,21 +22,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
ip: '13.57.97.131',
locale: 'en-US',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
externalId: [
{
type: 'tiktokExternalId',
@@ -54,18 +46,8 @@ export const data = [
eventId: '1616318632825_357',
clickId: 'dummyClickId',
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
- {
- price: 30,
- quantity: 1,
- content_type: 'dress',
- content_id: '1197218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
],
currency: 'USD',
value: 46.0,
@@ -87,12 +69,13 @@ export const data = [
sentAt: '2019-10-14T09:03:22.563Z',
},
metadata: {
- jobId: 5,
+ jobId: 1,
+ userId: 'u1',
},
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: false,
},
},
@@ -108,21 +91,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
locale: 'en-US',
ip: '13.57.97.131',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
externalId: [
{
type: 'tiktokExternalId',
@@ -150,18 +125,8 @@ export const data = [
},
},
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
- {
- price: 30,
- quantity: 1,
- content_type: 'dress',
- content_id: '1197218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
],
currency: 'USD',
value: 46.0,
@@ -172,12 +137,13 @@ export const data = [
sentAt: '2019-10-14T09:03:22.563Z',
},
metadata: {
- jobId: 1,
+ jobId: 2,
+ userId: 'u1',
},
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: false,
},
},
@@ -193,21 +159,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
locale: 'en-US',
ip: '13.57.97.131',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
externalId: [
{
type: 'tiktokExternalId',
@@ -238,18 +196,8 @@ export const data = [
ip: '13.57.97.131',
},
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
- {
- price: 30,
- quantity: 1,
- content_type: 'dress',
- content_id: '1197218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
],
currency: 'USD',
value: 46.0,
@@ -260,12 +208,13 @@ export const data = [
sentAt: '2019-10-14T09:03:22.563Z',
},
metadata: {
- jobId: 2,
+ jobId: 3,
+ userId: 'u1',
},
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: false,
},
},
@@ -281,21 +230,13 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
locale: 'en-US',
ip: '13.57.97.131',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
externalId: [
{
type: 'tiktokExternalId',
@@ -326,18 +267,8 @@ export const data = [
ip: '13.57.97.131',
},
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
- {
- price: 30,
- quantity: 1,
- content_type: 'dress',
- content_id: '1197218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
],
currency: 'USD',
value: 46.0,
@@ -349,11 +280,12 @@ export const data = [
},
metadata: {
jobId: 4,
+ userId: 'u1',
},
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: false,
},
},
@@ -382,7 +314,7 @@ export const data = [
params: {},
body: {
JSON: {
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: 'dummyPixelCode',
partner_name: 'RudderStack',
batch: [
{
@@ -392,12 +324,7 @@ export const data = [
timestamp: '2020-09-17T19:49:27Z',
properties: {
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
{
price: 30,
quantity: 1,
@@ -409,9 +336,7 @@ export const data = [
value: 46,
},
context: {
- ad: {
- callback: 'dummyClickId',
- },
+ ad: { callback: 'dummyClickId' },
page: {
url: 'http://demo.mywebsite.com/purchase',
referrer: 'http://demo.mywebsite.com',
@@ -454,12 +379,7 @@ export const data = [
properties: {
value: 46,
contents: [
- {
- price: 8,
- quantity: 2,
- content_id: '1077218',
- content_type: 'socks',
- },
+ { price: 8, quantity: 2, content_id: '1077218', content_type: 'socks' },
{
price: 30,
quantity: 1,
@@ -495,12 +415,7 @@ export const data = [
properties: {
value: 46,
contents: [
- {
- price: 8,
- quantity: 2,
- content_id: '1077218',
- content_type: 'socks',
- },
+ { price: 8, quantity: 2, content_id: '1077218', content_type: 'socks' },
{
price: 30,
quantity: 1,
@@ -536,12 +451,7 @@ export const data = [
properties: {
value: 46,
contents: [
- {
- price: 8,
- quantity: 2,
- content_id: '1077218',
- content_type: 'socks',
- },
+ { price: 8, quantity: 2, content_id: '1077218', content_type: 'socks' },
{
price: 30,
quantity: 1,
@@ -561,17 +471,21 @@ export const data = [
files: {},
},
metadata: [
- {
- jobId: 5,
- },
{
jobId: 1,
+ userId: 'u1',
},
{
jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
},
{
jobId: 4,
+ userId: 'u1',
},
],
batched: true,
@@ -579,7 +493,7 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: false,
},
},
@@ -591,7 +505,7 @@ export const data = [
},
{
name: 'tiktok_ads',
- description: 'Test 1',
+ description: 'Test 1 -> Events 1.0 Single Event inside batch',
feature: FEATURES.ROUTER,
module: 'destination',
version: 'v0',
@@ -610,27 +524,14 @@ export const data = [
namespace: 'com.rudderlabs.javascript',
version: '1.0.0',
},
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.0.0',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
locale: 'en-US',
ip: '13.57.97.131',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- externalId: [
- {
- type: 'tiktokExternalId',
- id: '1234',
- },
- ],
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ externalId: [{ type: 'tiktokExternalId', id: '1234' }],
},
messageId: '84e26acc-56a5-4835-8233-591137fca468',
session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
@@ -646,27 +547,14 @@ export const data = [
url: 'http://demo.mywebsite.com/purchase',
referrer: 'http://demo.mywebsite.com',
},
- user: {
- phone_number: '+858987675687',
- email: 'sample@sample.com',
- },
+ user: { phone_number: '+858987675687', email: 'sample@sample.com' },
userAgent:
'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
ip: '13.57.97.131',
},
contents: [
- {
- price: 8,
- quantity: 2,
- content_type: 'socks',
- content_id: '1077218',
- },
- {
- price: 30,
- quantity: 1,
- content_type: 'dress',
- content_id: '1197218',
- },
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
],
currency: 'USD',
value: 46.0,
@@ -678,11 +566,12 @@ export const data = [
},
metadata: {
jobId: 3,
+ userId: 'u1',
},
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: true,
},
},
@@ -723,22 +612,12 @@ export const data = [
},
event: 'AddToWishlist',
event_id: '1616318632825_357',
- pixel_code: 'A1T8T4UYGVIQA8ORZMX9',
+ pixel_code: 'dummyPixelCode',
partner_name: 'RudderStack',
properties: {
contents: [
- {
- content_id: '1077218',
- content_type: 'socks',
- price: 8,
- quantity: 2,
- },
- {
- content_id: '1197218',
- content_type: 'dress',
- price: 30,
- quantity: 1,
- },
+ { content_id: '1077218', content_type: 'socks', price: 8, quantity: 2 },
+ { content_id: '1197218', content_type: 'dress', price: 30, quantity: 1 },
],
currency: 'USD',
value: 46,
@@ -764,13 +643,14 @@ export const data = [
destination: {
Config: {
accessToken: 'dummyAccessToken',
- pixelCode: 'A1T8T4UYGVIQA8ORZMX9',
+ pixelCode: 'dummyPixelCode',
hashUserProperties: true,
},
},
metadata: [
{
jobId: 3,
+ userId: 'u1',
},
],
statusCode: 200,
@@ -780,4 +660,2144 @@ export const data = [
},
},
},
+ {
+ name: 'tiktok_ads',
+ description:
+ 'Test 2 -> Events 2.0 Single event is mapped to multiple tiktok event in config and exceeding max batch size',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id5' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id1' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id2' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id4' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ destType: 'tiktok_ads',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id5',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id1',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id1',
+ },
+ event: 'download',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id2',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id4',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'tiktok_ads',
+ description:
+ 'Test 3 -> Events 2.0 Single event is mapped to single tiktok event in config and over the max batch limit',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id5' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id1' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id2' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id4' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ destType: 'tiktok_ads',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id5',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id1',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id2',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id4',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 4 -> One input event is invalid with one event to multiple events',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id5' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id1' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'abc',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id2' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id4' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ destType: 'tiktok_ads',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id5',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id2',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id4',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ batched: false,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ hashUserProperties: false,
+ pixelCode: 'dummyPixelCode',
+ version: 'v2',
+ },
+ },
+ error: 'Event name (abc) is not valid, must be mapped to one of standard events',
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ statTags: {
+ destType: 'TIKTOK_ADS',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 5 -> Some input events are test events with one event to multiple events',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id5' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id1' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'addToCart',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id2' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ testEventCode: 'Some test event code for testing setup',
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 3,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id4' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 4,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ destType: 'tiktok_ads',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: {
+ url: 'http://demo.mywebsite.com/purchase',
+ referrer: 'http://demo.mywebsite.com',
+ },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id5',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id1',
+ },
+ event: 'CompletePayment',
+ },
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id1',
+ },
+ event: 'download',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id4',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ metadata: [
+ {
+ jobId: 4,
+ userId: 'u1',
+ },
+ ],
+ batched: true,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ test_event_code: 'Some test event code for testing setup',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id2',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 3,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
+ {
+ name: 'tiktok_ads',
+ description: 'Test 6 -> All input events are test events',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id5' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ testEventCode: 'TEST_EVENT_CODE',
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ message: {
+ anonymousId: '21e13f4bc7ceddad',
+ channel: 'web',
+ context: {
+ userAgent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ ip: '13.57.97.131',
+ locale: 'en-US',
+ externalId: [{ type: 'tiktokExternalId', id: 'id2' }],
+ },
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ session_id: '3049dc4c-5a95-4ccd-a3e7-d74a7e411f22',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ timestamp: '2020-09-17T19:49:27Z',
+ type: 'track',
+ event: 'checkout step completed',
+ properties: {
+ testEventCode: 'TEST_EVENT_CODE',
+ eventId: '1616318632825_357',
+ clickId: 'dummyClickId',
+ contents: [
+ { price: 8, quantity: 2, content_type: 'socks', content_id: '1077218' },
+ { price: 30, quantity: 1, content_type: 'dress', content_id: '1197218' },
+ ],
+ currency: 'USD',
+ value: 46,
+ url: 'http://demo.mywebsite.com/purchase',
+ phone: '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ email: 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 2,
+ userId: 'u1',
+ },
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ destType: 'tiktok_ads',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ test_event_code: 'TEST_EVENT_CODE',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id5',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 1,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ eventsToStandard: [
+ { from: 'addToCart', to: 'CompletePayment' },
+ { from: 'addToCart', to: 'download' },
+ ],
+ },
+ },
+ },
+ {
+ batchedRequest: [
+ {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/event/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_source_id: 'dummyPixelCode',
+ event_source: 'web',
+ partner_name: 'RudderStack',
+ test_event_code: 'TEST_EVENT_CODE',
+ data: [
+ {
+ event_id: '1616318632825_357',
+ event_time: 1600372167,
+ properties: {
+ contents: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'socks',
+ content_id: '1077218',
+ },
+ {
+ price: 30,
+ quantity: 1,
+ content_type: 'dress',
+ content_id: '1197218',
+ },
+ ],
+ content_type: 'product',
+ currency: 'USD',
+ value: 46,
+ },
+ page: { url: 'http://demo.mywebsite.com/purchase' },
+ user: {
+ locale: 'en-US',
+ email:
+ 'f0e388f53921a51f0bb0fc8a2944109ec188b59172935d8f23020b1614cc44bc',
+ phone:
+ '2f9d2b4df907e5c9a7b3434351b55700167b998a83dc479b825096486ffcf4ea',
+ ip: '13.57.97.131',
+ user_agent:
+ 'Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion',
+ external_id: 'id2',
+ },
+ event: 'CompletePayment',
+ },
+ ],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ },
+ ],
+ metadata: [
+ {
+ jobId: 2,
+ userId: 'u1',
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ pixelCode: 'dummyPixelCode',
+ hashUserProperties: false,
+ version: 'v2',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ mockFns: defaultMockFns,
+ },
];
diff --git a/test/integrations/destinations/tiktok_ads_offline_events/processor/data.ts b/test/integrations/destinations/tiktok_ads_offline_events/processor/data.ts
index a4ff796f379..81e125eacab 100644
--- a/test/integrations/destinations/tiktok_ads_offline_events/processor/data.ts
+++ b/test/integrations/destinations/tiktok_ads_offline_events/processor/data.ts
@@ -1,618 +1,861 @@
export const data = [
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "type": "Identify",
- "userId": "yash001",
- "originalTimestamp": "2019-10-14T09:03:17.562Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Event type identify is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "TIKTOK_ADS_OFFLINE_EVENTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": false
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7181537436256731137",
- "eventId": "1616318632825_352",
- "order_id": "abc_xyz",
- "shop_id": "123abc",
- "currency": "USD",
- "value": 46,
- "price": 8,
- "quantity": 2,
- "content_type": "product1234",
- "product_id": "1077218",
- "name": "socks",
- "category": "Men's cloth"
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/track/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7181537436256731137",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "properties": {
- "order_id": "abc_xyz",
- "shop_id": "123abc",
- "currency": "USD",
- "value": 46,
- "event_channel": "web",
- "contents": [
- {
- "content_name": "socks",
- "content_type": "product1234",
- "content_category": "Men's cloth",
- "content_id": "1077218",
- "price": 8,
- "quantity": 2
- }
- ]
- },
- "event": "Subscribe",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "event_set_id": "7181537436256731137",
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "1234567890"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7181537436256731137",
- "eventId": "1616318632825_352",
- "prop1": "val1"
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/track/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7181537436256731137",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "properties": {
- "event_channel": "web"
- },
- "event": "Subscribe",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "event_set_id": "7181537436256731137",
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true,
- "eventsToStandard": [
- {
- "from": "RandomEvent",
- "to": "SubmitForm"
- }
- ]
- }
- },
- "message": {
- "event": "RandomEvent",
- "context": {
- "traits": {
- "phone": "1234567890"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7185009018564395009",
- "eventId": "1616318632003_004",
- "prop1": "val1"
- },
- "userId": "eventIdn01",
- "timestamp": "2023-01-03",
- "type": "track"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/track/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7185009018564395009",
- "event_id": "1616318632003_004",
- "timestamp": "2023-01-03",
- "properties": {
- "event_channel": "web"
- },
- "event": "SubmitForm",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "event_set_id": "7185009018564395009",
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "hashUserProperties": true
- }
- },
- "message": {
- "type": "track",
- "userId": "yash001",
- "originalTimestamp": "2019-10-14T09:03:17.562Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Access Token not found",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "configuration",
- "destType": "TIKTOK_ADS_OFFLINE_EVENTS",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true
- }
- },
- "message": {
- "event": "subscribe",
- "context": {
- "traits": {
- "phone": "1234567890",
- "email": "random@mail.com"
- },
- "channel": "web"
- },
- "properties": {
- "eventSetId": "7181537436256731137",
- "eventId": "1616318632825_352",
- "products": [
- {
- "price": 8,
- "quantity": 2,
- "content_type": "product1",
- "product_id": "1077218",
- "name": "socks",
- "category": "Men's cloth"
- },
- {
- "price": 18,
- "quantity": 12,
- "content_type": "product2",
- "product_id": "1077219",
- "name": "socks1",
- "category": "Men's cloth1"
- }
- ]
- },
- "type": "track",
- "userId": "eventIdn01",
- "timestamp": "2023-01-03"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/track/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7181537436256731137",
- "event_id": "1616318632825_352",
- "timestamp": "2023-01-03",
- "properties": {
- "event_channel": "web",
- "contents": [
- {
- "content_name": "socks",
- "content_type": "product1",
- "content_category": "Men's cloth",
- "content_id": "1077218",
- "price": 8,
- "quantity": 2
- },
- {
- "content_name": "socks1",
- "content_type": "product2",
- "content_category": "Men's cloth1",
- "content_id": "1077219",
- "price": 18,
- "quantity": 12
- }
- ]
- },
- "event": "Subscribe",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "emails": [
- "d9fcca64ec1b250da4261a3f89a8e0f7749c4e0f5a1a918e5397194c8b5a9f16"
- ],
- "phone_numbers": [
- "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646"
- ]
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "event_set_id": "7181537436256731137",
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "tiktok_ads_offline_events",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "accessToken": "dummyAccessToken",
- "hashUserProperties": true,
- "eventsToStandard": [
- {
- "from": "CompletePayment",
- "to": "Purchase"
- }
- ]
- }
- },
- "message": {
- "type": "track",
- "event": "CompletePayment",
- "sentAt": "2023-03-22T00:02:33.802Z",
- "traits": {
- "email": [
- "efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900",
- "078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f"
- ],
- "phone": [
- "c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05",
- "078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f"
- ]
- },
- "userId": "60241286212",
- "channel": "sources",
- "context": {
- "sources": {
- "job_id": "2N4WuoNQpGYmCPASUvnV86QyhY4/Syncher",
- "version": "v1.20.0",
- "job_run_id": "cgd4a063b2fn2e1j0q90",
- "task_run_id": "cgd4a063b2fn2e1j0qa0"
- }
- },
- "recordId": "16322",
- "rudderId": "5b4ed73f-69aa-4198-88d1-3d4d509acbf1",
- "messageId": "cgd4b663b2fn2e1j8th0",
- "timestamp": "2023-03-22T00:02:33.170Z",
- "properties": {
- "phone": "c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05",
- "value": 32.839999999999996,
- "emails": "[\"efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900\",\"078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]",
- "eventId": "8965fb56-090f-47a5-aa7f-bbab22d9ec90",
- "currency": "USD",
- "order_id": 60241286212,
- "eventSetId": "7211223771099742210",
- "event_name": "CompletePayment"
- },
- "receivedAt": "2023-03-22T00:02:33.171Z",
- "request_ip": "10.7.78.187",
- "anonymousId": "60241286212",
- "originalTimestamp": "2023-03-22T00:02:33.802Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/offline/track/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "event_set_id": "7211223771099742210",
- "event_id": "8965fb56-090f-47a5-aa7f-bbab22d9ec90",
- "timestamp": "2023-03-22T00:02:33.170Z",
- "properties": {
- "order_id": 60241286212,
- "currency": "USD",
- "value": 32.839999999999996
- },
- "event": "Purchase",
- "partner_name": "RudderStack",
- "context": {
- "user": {
- "emails": [
- "4dc75b075057df6f6b729e74a9feed1244dcf8ceb7903eaba13203f3268ae4b9",
- "77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68"
- ],
- "phone_numbers": [
- "28b7b205c2936d2ded022d2587fb2677a76e560e921b3ad615b739b0238baa5d",
- "77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68"
- ]
- }
- }
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "event_set_id": "7211223771099742210",
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ },
+ },
+ message: {
+ type: 'Identify',
+ userId: 'yash001',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type identify is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'TIKTOK_ADS_OFFLINE_EVENTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: false,
+ },
+ },
+ message: {
+ event: 'subscribe',
+ context: {
+ traits: {
+ phone: 'c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646',
+ },
+ channel: 'web',
+ },
+ properties: {
+ eventSetId: '7181537436256731137',
+ eventId: '1616318632825_352',
+ order_id: 'abc_xyz',
+ shop_id: '123abc',
+ currency: 'USD',
+ value: 46,
+ price: 8,
+ quantity: 2,
+ content_type: 'product1234',
+ product_id: '1077218',
+ name: 'socks',
+ category: "Men's cloth",
+ },
+ type: 'track',
+ userId: 'eventIdn01',
+ timestamp: '2023-01-03',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7181537436256731137',
+ event_id: '1616318632825_352',
+ timestamp: '2023-01-03',
+ properties: {
+ order_id: 'abc_xyz',
+ shop_id: '123abc',
+ currency: 'USD',
+ value: 46,
+ event_channel: 'web',
+ contents: [
+ {
+ content_name: 'socks',
+ content_type: 'product1234',
+ content_category: "Men's cloth",
+ content_id: '1077218',
+ price: 8,
+ quantity: 2,
+ },
+ ],
+ },
+ event: 'Subscribe',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ phone_numbers: [
+ 'c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7181537436256731137',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ },
+ },
+ message: {
+ event: 'subscribe',
+ context: {
+ traits: {
+ phone: '1234567890',
+ },
+ channel: 'web',
+ },
+ properties: {
+ eventSetId: '7181537436256731137',
+ eventId: '1616318632825_352',
+ prop1: 'val1',
+ },
+ type: 'track',
+ userId: 'eventIdn01',
+ timestamp: '2023-01-03',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7181537436256731137',
+ event_id: '1616318632825_352',
+ timestamp: '2023-01-03',
+ properties: {
+ event_channel: 'web',
+ },
+ event: 'Subscribe',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ phone_numbers: [
+ 'c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7181537436256731137',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ eventsToStandard: [
+ {
+ from: 'RandomEvent',
+ to: 'SubmitForm',
+ },
+ ],
+ },
+ },
+ message: {
+ event: 'RandomEvent',
+ context: {
+ traits: {
+ phone: '1234567890',
+ },
+ channel: 'web',
+ },
+ properties: {
+ eventSetId: '7185009018564395009',
+ eventId: '1616318632003_004',
+ prop1: 'val1',
+ },
+ userId: 'eventIdn01',
+ timestamp: '2023-01-03',
+ type: 'track',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7185009018564395009',
+ event_id: '1616318632003_004',
+ timestamp: '2023-01-03',
+ properties: {
+ event_channel: 'web',
+ },
+ event: 'SubmitForm',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ phone_numbers: [
+ 'c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7185009018564395009',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ hashUserProperties: true,
+ },
+ },
+ message: {
+ type: 'track',
+ userId: 'yash001',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Access Token not found',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'configuration',
+ destType: 'TIKTOK_ADS_OFFLINE_EVENTS',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ },
+ },
+ message: {
+ event: 'subscribe',
+ context: {
+ traits: {
+ phone: '1234567890',
+ email: 'random@mail.com',
+ },
+ channel: 'web',
+ },
+ properties: {
+ eventSetId: '7181537436256731137',
+ eventId: '1616318632825_352',
+ products: [
+ {
+ price: 8,
+ quantity: 2,
+ content_type: 'product1',
+ product_id: '1077218',
+ name: 'socks',
+ category: "Men's cloth",
+ },
+ {
+ price: 18,
+ quantity: 12,
+ content_type: 'product2',
+ product_id: '1077219',
+ name: 'socks1',
+ category: "Men's cloth1",
+ },
+ ],
+ },
+ type: 'track',
+ userId: 'eventIdn01',
+ timestamp: '2023-01-03',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7181537436256731137',
+ event_id: '1616318632825_352',
+ timestamp: '2023-01-03',
+ properties: {
+ event_channel: 'web',
+ contents: [
+ {
+ content_name: 'socks',
+ content_type: 'product1',
+ content_category: "Men's cloth",
+ content_id: '1077218',
+ price: 8,
+ quantity: 2,
+ },
+ {
+ content_name: 'socks1',
+ content_type: 'product2',
+ content_category: "Men's cloth1",
+ content_id: '1077219',
+ price: 18,
+ quantity: 12,
+ },
+ ],
+ },
+ event: 'Subscribe',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ emails: ['d9fcca64ec1b250da4261a3f89a8e0f7749c4e0f5a1a918e5397194c8b5a9f16'],
+ phone_numbers: [
+ 'c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7181537436256731137',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ eventsToStandard: [
+ {
+ from: 'CompletePayment',
+ to: 'Purchase',
+ },
+ ],
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'CompletePayment',
+ sentAt: '2023-03-22T00:02:33.802Z',
+ traits: {
+ email: [
+ 'efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ phone: [
+ 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ },
+ userId: '60241286212',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '2N4WuoNQpGYmCPASUvnV86QyhY4/Syncher',
+ version: 'v1.20.0',
+ job_run_id: 'cgd4a063b2fn2e1j0q90',
+ task_run_id: 'cgd4a063b2fn2e1j0qa0',
+ },
+ },
+ recordId: '16322',
+ rudderId: '5b4ed73f-69aa-4198-88d1-3d4d509acbf1',
+ messageId: 'cgd4b663b2fn2e1j8th0',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ phone: 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ value: 32.839999999999996,
+ emails:
+ '["efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900","078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f","","","","","","","",""]',
+ eventId: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ currency: 'USD',
+ order_id: 60241286212,
+ eventSetId: '7211223771099742210',
+ event_name: 'CompletePayment',
+ },
+ receivedAt: '2023-03-22T00:02:33.171Z',
+ request_ip: '10.7.78.187',
+ anonymousId: '60241286212',
+ originalTimestamp: '2023-03-22T00:02:33.802Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7211223771099742210',
+ event_id: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ order_id: 60241286212,
+ currency: 'USD',
+ value: 32.839999999999996,
+ },
+ event: 'Purchase',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ emails: [
+ '4dc75b075057df6f6b729e74a9feed1244dcf8ceb7903eaba13203f3268ae4b9',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ phone_numbers: [
+ '28b7b205c2936d2ded022d2587fb2677a76e560e921b3ad615b739b0238baa5d',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7211223771099742210',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description: 'Test 7 -> `search` standard tiktok Event through event mapping from UI',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ eventsToStandard: [
+ {
+ from: 'custom event',
+ to: 'Search',
+ },
+ ],
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'custom event',
+ sentAt: '2023-03-22T00:02:33.802Z',
+ traits: {
+ email: [
+ 'efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ phone: [
+ 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ },
+ userId: '60241286212',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '2N4WuoNQpGYmCPASUvnV86QyhY4/Syncher',
+ version: 'v1.20.0',
+ job_run_id: 'cgd4a063b2fn2e1j0q90',
+ task_run_id: 'cgd4a063b2fn2e1j0qa0',
+ },
+ },
+ recordId: '16322',
+ rudderId: '5b4ed73f-69aa-4198-88d1-3d4d509acbf1',
+ messageId: 'cgd4b663b2fn2e1j8th0',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ phone: 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ value: 32.839999999999996,
+ emails:
+ '["efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900","078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f","","","","","","","",""]',
+ eventId: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ currency: 'USD',
+ order_id: 60241286212,
+ eventSetId: '7211223771099742210',
+ event_name: 'CompletePayment',
+ },
+ receivedAt: '2023-03-22T00:02:33.171Z',
+ request_ip: '10.7.78.187',
+ anonymousId: '60241286212',
+ originalTimestamp: '2023-03-22T00:02:33.802Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7211223771099742210',
+ event_id: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ order_id: 60241286212,
+ currency: 'USD',
+ value: 32.839999999999996,
+ },
+ event: 'Search',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ emails: [
+ '4dc75b075057df6f6b729e74a9feed1244dcf8ceb7903eaba13203f3268ae4b9',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ phone_numbers: [
+ '28b7b205c2936d2ded022d2587fb2677a76e560e921b3ad615b739b0238baa5d',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7211223771099742210',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'tiktok_ads_offline_events',
+ description:
+ 'Test 8 -> `PlaceAnOrder` standard tiktok Event through event `order completed` in payload',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ accessToken: 'dummyAccessToken',
+ hashUserProperties: true,
+ eventsToStandard: [],
+ },
+ },
+ message: {
+ type: 'track',
+ event: 'order completed',
+ sentAt: '2023-03-22T00:02:33.802Z',
+ traits: {
+ email: [
+ 'efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ phone: [
+ 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ '078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f',
+ ],
+ },
+ userId: '60241286212',
+ channel: 'sources',
+ context: {
+ sources: {
+ job_id: '2N4WuoNQpGYmCPASUvnV86QyhY4/Syncher',
+ version: 'v1.20.0',
+ job_run_id: 'cgd4a063b2fn2e1j0q90',
+ task_run_id: 'cgd4a063b2fn2e1j0qa0',
+ },
+ },
+ recordId: '16322',
+ rudderId: '5b4ed73f-69aa-4198-88d1-3d4d509acbf1',
+ messageId: 'cgd4b663b2fn2e1j8th0',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ phone: 'c4994d14e724936f1169147dddf1673a09af69b55cc54bc695dbe246bd093b05',
+ value: 32.839999999999996,
+ emails:
+ '["efaaf5c8803af4fbf305d7a110c832673d89ed40983770329092fd04b0ba7900","078d6c8e19f24093368d1712d7801970467f59216f7ccc087bf81b91e0e1f68f","","","","","","","",""]',
+ eventId: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ currency: 'USD',
+ order_id: 60241286212,
+ eventSetId: '7211223771099742210',
+ event_name: 'CompletePayment',
+ },
+ receivedAt: '2023-03-22T00:02:33.171Z',
+ request_ip: '10.7.78.187',
+ anonymousId: '60241286212',
+ originalTimestamp: '2023-03-22T00:02:33.802Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/track/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ event_set_id: '7211223771099742210',
+ event_id: '8965fb56-090f-47a5-aa7f-bbab22d9ec90',
+ timestamp: '2023-03-22T00:02:33.170Z',
+ properties: {
+ order_id: 60241286212,
+ currency: 'USD',
+ value: 32.839999999999996,
+ },
+ event: 'PlaceAnOrder',
+ partner_name: 'RudderStack',
+ context: {
+ user: {
+ emails: [
+ '4dc75b075057df6f6b729e74a9feed1244dcf8ceb7903eaba13203f3268ae4b9',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ phone_numbers: [
+ '28b7b205c2936d2ded022d2587fb2677a76e560e921b3ad615b739b0238baa5d',
+ '77b639edeb3cd6c801ea05176b8acbfa38d5f38490b764cd0c80756d0cf9ec68',
+ ],
+ },
+ },
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ event_set_id: '7211223771099742210',
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/tiktok_ads_offline_events/router/data.ts b/test/integrations/destinations/tiktok_ads_offline_events/router/data.ts
index c479da741b9..15b5f6674de 100644
--- a/test/integrations/destinations/tiktok_ads_offline_events/router/data.ts
+++ b/test/integrations/destinations/tiktok_ads_offline_events/router/data.ts
@@ -1,10 +1,8 @@
-import { FEATURES } from '../../../../../src/v0/util/tags';
-
export const data = [
{
name: 'tiktok_ads_offline_events',
description: 'Test 0',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -12,30 +10,20 @@ export const data = [
body: {
input: [
{
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
message: {
event: 'subscribe',
- context: {
- traits: {
- phone: '1234567890',
- },
- channel: 'web',
- },
+ context: { traits: { phone: '1234567890' }, channel: 'web' },
properties: {
eventSetId: '7181537436256731137',
eventId: '1616318632825_352',
order_id: 'abc_xyz',
shop_id: '123abc',
currency: 'USD',
- value: 46.0,
+ value: 46,
price: 8,
quantity: 2,
content_type: 'product1234',
@@ -49,22 +37,14 @@ export const data = [
},
},
{
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
message: {
event: 'subscribe',
context: {
- traits: {
- phone: '1234567890',
- email: 'random@mail.com',
- },
+ traits: { phone: '1234567890', email: 'random@mail.com' },
channel: 'web',
},
properties: {
@@ -111,10 +91,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/batch/',
- headers: {
- 'Access-Token': 'dummyAccessToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Access-Token': 'dummyAccessToken', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -149,7 +126,7 @@ export const data = [
],
event_channel: 'web',
currency: 'USD',
- value: 46.0,
+ value: 46,
},
},
{
@@ -199,18 +176,11 @@ export const data = [
files: {},
},
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
metadata: [
- {
- jobId: 1,
- },
- {
- jobId: 2,
- },
+ { jobId: 1, userId: 'u1' },
+ { jobId: 2, userId: 'u1' },
],
statusCode: 200,
},
@@ -222,7 +192,7 @@ export const data = [
{
name: 'tiktok_ads_offline_events',
description: 'Test 1',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -230,28 +200,18 @@ export const data = [
body: {
input: [
{
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
message: {
event: 'subscribe',
- context: {
- traits: {
- phone: '1234567890',
- },
- channel: 'web',
- },
+ context: { traits: { phone: '1234567890' }, channel: 'web' },
properties: {
eventSetId: '6071537445256731123',
eventId: '1616318632825_352',
currency: 'USD',
- value: 46.0,
+ value: 46,
price: 8,
content_type: 'product1234',
},
@@ -277,10 +237,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://business-api.tiktok.com/open_api/v1.3/offline/batch/',
- headers: {
- 'Access-Token': 'dummyAccessToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Access-Token': 'dummyAccessToken', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -301,15 +258,10 @@ export const data = [
},
},
properties: {
- contents: [
- {
- price: 8,
- content_type: 'product1234',
- },
- ],
+ contents: [{ price: 8, content_type: 'product1234' }],
event_channel: 'web',
currency: 'USD',
- value: 46.0,
+ value: 46,
},
},
],
@@ -321,16 +273,9 @@ export const data = [
files: {},
},
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
],
@@ -341,7 +286,7 @@ export const data = [
{
name: 'tiktok_ads_offline_events',
description: 'Test 2',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -349,26 +294,13 @@ export const data = [
body: {
input: [
{
- metadata: {
- jobId: 4,
- },
+ metadata: { jobId: 4, userId: 'u1' },
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
message: {
- context: {
- traits: {
- phone: '1234567890',
- },
- channel: 'web',
- },
- properties: {
- eventSetId: '2345676543',
- eventId: '1616318632825_352',
- },
+ context: { traits: { phone: '1234567890' }, channel: 'web' },
+ properties: { eventSetId: '2345676543', eventId: '1616318632825_352' },
type: 'track',
userId: 'eventIdn01',
timestamp: '2023-01-03',
@@ -386,18 +318,11 @@ export const data = [
output: [
{
destination: {
- Config: {
- accessToken: 'dummyAccessToken',
- hashUserProperties: true,
- },
+ Config: { accessToken: 'dummyAccessToken', hashUserProperties: true },
},
batched: false,
error: 'Event name is required',
- metadata: [
- {
- jobId: 4,
- },
- ],
+ metadata: [{ jobId: 4, userId: 'u1' }],
statTags: {
errorCategory: 'dataValidation',
errorType: 'instrumentation',
diff --git a/test/integrations/destinations/tiktok_audience/processor/data.ts b/test/integrations/destinations/tiktok_audience/processor/data.ts
index a715aa2f72d..0395ff48e00 100644
--- a/test/integrations/destinations/tiktok_audience/processor/data.ts
+++ b/test/integrations/destinations/tiktok_audience/processor/data.ts
@@ -1,854 +1,746 @@
export const data = [
- {
- "name": "tiktok_audience",
- "description": "Test 1: Containing SHA256 traits only",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ {
+ name: 'tiktok_audience',
+ description: 'Test 1: Containing SHA256 traits only',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
{
- "message": {
- "userId": "user 1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "EMAIL_SHA256": "alex@email.com"
- },
- {
- "EMAIL_SHA256": "amy@abc.com"
- },
- {
- "EMAIL_SHA256": "van@abc.com"
- }
- ],
- "remove": [
- {
- "EMAIL_SHA256": "alex@email.com"
- },
- {
- "EMAIL_SHA256": "amy@abc.com"
- },
- {
- "EMAIL_SHA256": "van@abc.com"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "externalId": [
- {
- "type": "TIKTOK_AUDIENCE-23856594064540489",
- "identifierType": "EMAIL_SHA256"
- }
- ],
- "destinationFields": "EMAIL_SHA256"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkV2Enabled": true
- }
- },
- "Config": {
- "isHashRequired": true,
- "registerDeviceOrBrowserApiKey": true,
- "apiKey": "intercomApiKey",
- "appId": "9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0",
- "collectContext": false
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
+ EMAIL_SHA256: 'alex@email.com',
+ },
+ {
+ EMAIL_SHA256: 'amy@abc.com',
+ },
+ {
+ EMAIL_SHA256: 'van@abc.com',
+ },
+ ],
+ remove: [
+ {
+ EMAIL_SHA256: 'alex@email.com',
+ },
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "add"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
+ EMAIL_SHA256: 'amy@abc.com',
},
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "delete"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ EMAIL_SHA256: 'van@abc.com',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ externalId: [
+ {
+ type: 'TIKTOK_AUDIENCE-23856594064540489',
+ identifierType: 'EMAIL_SHA256',
+ },
+ ],
+ destinationFields: 'EMAIL_SHA256',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ isHashRequired: true,
+ registerDeviceOrBrowserApiKey: true,
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: ['EMAIL_SHA256'],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: ['EMAIL_SHA256'],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'delete',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "tiktok_audience",
- "description": "Test 2: Containing SHA256 and MD5 traits",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ },
+ {
+ name: 'tiktok_audience',
+ description: 'Test 2: Containing SHA256 and MD5 traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
+ {
+ EMAIL_SHA256: 'alex@email.com',
+ AAID_MD5: '1234567',
+ },
{
- "message": {
- "userId": "user 1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "EMAIL_SHA256": "alex@email.com",
- "AAID_MD5": "1234567"
- },
- {
- "EMAIL_SHA256": "amy@abc.com",
- "AAID_MD5": "1234568"
- },
- {
- "EMAIL_SHA256": "van@abc.com",
- "AAID_MD5": "1234569"
- }
- ],
- "remove": [
- {
- "EMAIL_SHA256": "alex@email.com",
- "AAID_MD5": "1234570"
- },
- {
- "EMAIL_SHA256": "amy@abc.com",
- "AAID_MD5": "1234571"
- },
- {
- "EMAIL_SHA256": "van@abc.com",
- "AAID_MD5": "1234572"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "externalId": [
- {
- "type": "TIKTOK_AUDIENCE-23856594064540489",
- "identifierType": "EMAIL_SHA256"
- }
- ],
- "destinationFields": "EMAIL_SHA256, AAID_MD5"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkV2Enabled": true
- }
- },
- "Config": {
- "isHashRequired": true,
- "registerDeviceOrBrowserApiKey": true,
- "apiKey": "intercomApiKey",
- "appId": "9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0",
- "collectContext": false
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
+ EMAIL_SHA256: 'amy@abc.com',
+ AAID_MD5: '1234568',
+ },
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "fcea920f7412b5da7be0cf42b8c93759",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "fe743d8d97aa7dfc6c93ccdc2e749513",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "e36a2f90240e9e84483504fd4a704452",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256",
- "AAID_MD5"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "add"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
+ EMAIL_SHA256: 'van@abc.com',
+ AAID_MD5: '1234569',
},
+ ],
+ remove: [
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "c1abd65fea29d573ddef1bce925e3276",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "7298110702a080dfc6903f13333eb04a",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "d9cb68b1fd3b9d32abc5f4cab8b42b68",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256",
- "AAID_MD5"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "delete"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ EMAIL_SHA256: 'alex@email.com',
+ AAID_MD5: '1234570',
+ },
+ {
+ EMAIL_SHA256: 'amy@abc.com',
+ AAID_MD5: '1234571',
+ },
+ {
+ EMAIL_SHA256: 'van@abc.com',
+ AAID_MD5: '1234572',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ externalId: [
+ {
+ type: 'TIKTOK_AUDIENCE-23856594064540489',
+ identifierType: 'EMAIL_SHA256',
+ },
+ ],
+ destinationFields: 'EMAIL_SHA256, AAID_MD5',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ isHashRequired: true,
+ registerDeviceOrBrowserApiKey: true,
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'fcea920f7412b5da7be0cf42b8c93759',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'fe743d8d97aa7dfc6c93ccdc2e749513',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'e36a2f90240e9e84483504fd4a704452',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: ['EMAIL_SHA256', 'AAID_MD5'],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'c1abd65fea29d573ddef1bce925e3276',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: '7298110702a080dfc6903f13333eb04a',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '2048acfa84a01121060ca2fc8a673a76d427176dc37224d4408c21973bd90e5c',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'd9cb68b1fd3b9d32abc5f4cab8b42b68',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: ['EMAIL_SHA256', 'AAID_MD5'],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'delete',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "tiktok_audience",
- "description": "Test 3: Containing all possible traits",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ },
+ {
+ name: 'tiktok_audience',
+ description: 'Test 3: Containing all possible traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
{
- "message": {
- "userId": "user 1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "EMAIL_SHA256": "alex@email.com",
- "PHONE_SHA256": "+129988776655",
- "IDFA_SHA256": "1234lkasfjdalj12321",
- "AAID_SHA256": "000999OOOQQQQ",
- "AAID_MD5": "000999OOOQQQQ",
- "IDFA_MD5": "1234lkasfjdalj12321"
- },
- {
- "EMAIL_SHA256": "amy@abc.com",
- "PHONE_SHA256": "+129988776677",
- "IDFA_SHA256": "1234lkasfjdalj114455",
- "AAID_SHA256": "000999OOOPPPP",
- "AAID_MD5": "000999OOOPPPP",
- "IDFA_MD5": "1234lkasfjdalj114455"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "externalId": [
- {
- "type": "TIKTOK_AUDIENCE-23856594064540489",
- "identifierType": "EMAIL_SHA256"
- }
- ],
- "destinationFields": "EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkV2Enabled": true
- }
- },
- "Config": {
- "isHashRequired": true,
- "registerDeviceOrBrowserApiKey": true,
- "apiKey": "intercomApiKey",
- "appId": "9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0",
- "collectContext": false
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
+ EMAIL_SHA256: 'alex@email.com',
+ PHONE_SHA256: '+129988776655',
+ IDFA_SHA256: '1234lkasfjdalj12321',
+ AAID_SHA256: '000999OOOQQQQ',
+ AAID_MD5: '000999OOOQQQQ',
+ IDFA_MD5: '1234lkasfjdalj12321',
+ },
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "31e78a3bf9ce2b43316f64fe883a531d6266938091e94e2f2480272481163dee",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "0259f595f7172c8dd692a5c37b4d296939555f862aae8adb964391bdb65006ab",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "b06fbe7a29f33576a792ba3df3c9bf838cd26ea88cf574285fa60dc0234a8485",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {},
- {
- "id": "32ee3d063320815a13e0058c2498ff76",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "fb40adc7debbf40e7b45b0a4a91886785dff1a28809276f95f1c44f7045f9b4d",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "e6bbdf34c5f3472f31b2923a26811560a599233f3dea4c9971595c3bb7b1e8dc",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "661125f7d337811256c5b55996b22c89047804dcec494db72659e4be71e03091",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {},
- {
- "id": "94162773066d6ae88b2658dc58ca2317",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256",
- "PHONE_SHA256",
- "IDFA_SHA256",
- "AAID_SHA256",
- "AAID_MD",
- "IDFA_MD5"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "add"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
+ EMAIL_SHA256: 'amy@abc.com',
+ PHONE_SHA256: '+129988776677',
+ IDFA_SHA256: '1234lkasfjdalj114455',
+ AAID_SHA256: '000999OOOPPPP',
+ AAID_MD5: '000999OOOPPPP',
+ IDFA_MD5: '1234lkasfjdalj114455',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ externalId: [
+ {
+ type: 'TIKTOK_AUDIENCE-23856594064540489',
+ identifierType: 'EMAIL_SHA256',
+ },
+ ],
+ destinationFields:
+ 'EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ isHashRequired: true,
+ registerDeviceOrBrowserApiKey: true,
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: '31e78a3bf9ce2b43316f64fe883a531d6266938091e94e2f2480272481163dee',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: '0259f595f7172c8dd692a5c37b4d296939555f862aae8adb964391bdb65006ab',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'b06fbe7a29f33576a792ba3df3c9bf838cd26ea88cf574285fa60dc0234a8485',
+ audience_ids: ['23856594064540489'],
+ },
+ {},
+ {
+ id: '32ee3d063320815a13e0058c2498ff76',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'fb40adc7debbf40e7b45b0a4a91886785dff1a28809276f95f1c44f7045f9b4d',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: 'e6bbdf34c5f3472f31b2923a26811560a599233f3dea4c9971595c3bb7b1e8dc',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: '661125f7d337811256c5b55996b22c89047804dcec494db72659e4be71e03091',
+ audience_ids: ['23856594064540489'],
+ },
+ {},
+ {
+ id: '94162773066d6ae88b2658dc58ca2317',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: [
+ 'EMAIL_SHA256',
+ 'PHONE_SHA256',
+ 'IDFA_SHA256',
+ 'AAID_SHA256',
+ 'AAID_MD',
+ 'IDFA_MD5',
+ ],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
},
- {
- "name": "tiktok_audience",
- "description": "Test 4: Considering some null values",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
+ },
+ {
+ name: 'tiktok_audience',
+ description: 'Test 4: Considering some null values',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ message: {
+ userId: 'user 1',
+ type: 'audiencelist',
+ properties: {
+ listData: {
+ add: [
{
- "message": {
- "userId": "user 1",
- "type": "audiencelist",
- "properties": {
- "listData": {
- "add": [
- {
- "EMAIL_SHA256": "alex@email.com",
- "PHONE_SHA256": "+129988776655",
- "AAID_MD5": "000999OOOQQQQ",
- "IDFA_MD5": "1234lkasfjdalj12321"
- },
- {
- "EMAIL_SHA256": "amy@abc.com",
- "AAID_SHA256": "000999OOOPPPP",
- "AAID_MD5": "000999OOOPPPP",
- "IDFA_MD5": "1234lkasfjdalj114455"
- }
- ]
- }
- },
- "context": {
- "ip": "14.5.67.21",
- "library": {
- "name": "http"
- },
- "externalId": [
- {
- "type": "TIKTOK_AUDIENCE-23856594064540489",
- "identifierType": "EMAIL_SHA256"
- }
- ],
- "destinationFields": "EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5"
- },
- "timestamp": "2020-02-02T00:23:09.544Z"
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "destination": {
- "DestinationDefinition": {
- "Config": {
- "cdkV2Enabled": true
- }
- },
- "Config": {
- "isHashRequired": true,
- "registerDeviceOrBrowserApiKey": true,
- "apiKey": "intercomApiKey",
- "appId": "9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0",
- "collectContext": false
- }
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
+ EMAIL_SHA256: 'alex@email.com',
+ PHONE_SHA256: '+129988776655',
+ AAID_MD5: '000999OOOQQQQ',
+ IDFA_MD5: '1234lkasfjdalj12321',
+ },
{
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://business-api.tiktok.com/open_api/v1.3/segment/mapping/",
- "headers": {
- "Access-Token": "dummyAccessToken",
- "Content-Type": "application/json"
- },
- "params": {},
- "body": {
- "JSON": {
- "batch_data": [
- [
- {
- "id": "ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {
- "id": "31e78a3bf9ce2b43316f64fe883a531d6266938091e94e2f2480272481163dee",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {},
- {},
- {},
- {
- "id": "32ee3d063320815a13e0058c2498ff76",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ],
- [
- {
- "id": "49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {},
- {},
- {
- "id": "661125f7d337811256c5b55996b22c89047804dcec494db72659e4be71e03091",
- "audience_ids": [
- "23856594064540489"
- ]
- },
- {},
- {
- "id": "94162773066d6ae88b2658dc58ca2317",
- "audience_ids": [
- "23856594064540489"
- ]
- }
- ]
- ],
- "id_schema": [
- "EMAIL_SHA256",
- "PHONE_SHA256",
- "IDFA_SHA256",
- "AAID_SHA256",
- "AAID_MD",
- "IDFA_MD5"
- ],
- "advertiser_ids": [
- "dummyAdverTiserID"
- ],
- "action": "add"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "metadata": {
- "jobId": 1,
- "secret": {
- "accessToken": "dummyAccessToken",
- "advertiserIds": [
- "dummyAdverTiserID"
- ]
- }
- },
- "statusCode": 200
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ EMAIL_SHA256: 'amy@abc.com',
+ AAID_SHA256: '000999OOOPPPP',
+ AAID_MD5: '000999OOOPPPP',
+ IDFA_MD5: '1234lkasfjdalj114455',
+ },
+ ],
+ },
+ },
+ context: {
+ ip: '14.5.67.21',
+ library: {
+ name: 'http',
+ },
+ externalId: [
+ {
+ type: 'TIKTOK_AUDIENCE-23856594064540489',
+ identifierType: 'EMAIL_SHA256',
+ },
+ ],
+ destinationFields:
+ 'EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5',
+ },
+ timestamp: '2020-02-02T00:23:09.544Z',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ destination: {
+ DestinationDefinition: {
+ Config: {
+ cdkV2Enabled: true,
+ },
+ },
+ Config: {
+ isHashRequired: true,
+ registerDeviceOrBrowserApiKey: true,
+ apiKey: 'intercomApiKey',
+ appId: '9e9cdea1-78fa-4829-a9b2-5d7f7e96d1a0',
+ collectContext: false,
+ },
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
+ headers: {
+ 'Access-Token': 'dummyAccessToken',
+ 'Content-Type': 'application/json',
+ },
+ params: {},
+ body: {
+ JSON: {
+ batch_data: [
+ [
+ {
+ id: 'ac0f1baec38a9ef3cfcb56db981df7d9bab2568c7f53ef3776d1c059ec58e72b',
+ audience_ids: ['23856594064540489'],
+ },
+ {
+ id: '31e78a3bf9ce2b43316f64fe883a531d6266938091e94e2f2480272481163dee',
+ audience_ids: ['23856594064540489'],
+ },
+ {},
+ {},
+ {},
+ {
+ id: '32ee3d063320815a13e0058c2498ff76',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ [
+ {
+ id: '49eaeca26c878f268ad33af8cfa8194ca5b8b8e448b1c775bf9153a2de734579',
+ audience_ids: ['23856594064540489'],
+ },
+ {},
+ {},
+ {
+ id: '661125f7d337811256c5b55996b22c89047804dcec494db72659e4be71e03091',
+ audience_ids: ['23856594064540489'],
+ },
+ {},
+ {
+ id: '94162773066d6ae88b2658dc58ca2317',
+ audience_ids: ['23856594064540489'],
+ },
+ ],
+ ],
+ id_schema: [
+ 'EMAIL_SHA256',
+ 'PHONE_SHA256',
+ 'IDFA_SHA256',
+ 'AAID_SHA256',
+ 'AAID_MD',
+ 'IDFA_MD5',
+ ],
+ advertiser_ids: ['dummyAdverTiserID'],
+ action: 'add',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ metadata: {
+ jobId: 1,
+ secret: {
+ accessToken: 'dummyAccessToken',
+ advertiserIds: ['dummyAdverTiserID'],
+ },
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/tiktok_audience/router/data.ts b/test/integrations/destinations/tiktok_audience/router/data.ts
index c8a8b93d306..71e7038269b 100644
--- a/test/integrations/destinations/tiktok_audience/router/data.ts
+++ b/test/integrations/destinations/tiktok_audience/router/data.ts
@@ -16,39 +16,22 @@ export const data = [
properties: {
listData: {
add: [
- {
- EMAIL_SHA256: 'alex@email.com',
- },
- {
- EMAIL_SHA256: 'amy@abc.com',
- },
- {
- EMAIL_SHA256: 'van@abc.com',
- },
+ { EMAIL_SHA256: 'alex@email.com' },
+ { EMAIL_SHA256: 'amy@abc.com' },
+ { EMAIL_SHA256: 'van@abc.com' },
],
remove: [
- {
- EMAIL_SHA256: 'alex@email.com',
- },
- {
- EMAIL_SHA256: 'amy@abc.com',
- },
- {
- EMAIL_SHA256: 'van@abc.com',
- },
+ { EMAIL_SHA256: 'alex@email.com' },
+ { EMAIL_SHA256: 'amy@abc.com' },
+ { EMAIL_SHA256: 'van@abc.com' },
],
},
},
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
externalId: [
- {
- type: 'TIKTOK_AUDIENCE-23856594064540489',
- identifierType: 'EMAIL_SHA256',
- },
+ { type: 'TIKTOK_AUDIENCE-23856594064540489', identifierType: 'EMAIL_SHA256' },
],
destinationFields: 'EMAIL_SHA256',
},
@@ -56,17 +39,11 @@ export const data = [
},
metadata: {
jobId: 1,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -83,45 +60,22 @@ export const data = [
properties: {
listData: {
add: [
- {
- EMAIL_SHA256: 'alex@email.com',
- AAID_MD5: '1234567',
- },
- {
- EMAIL_SHA256: 'amy@abc.com',
- AAID_MD5: '1234568',
- },
- {
- EMAIL_SHA256: 'van@abc.com',
- AAID_MD5: '1234569',
- },
+ { EMAIL_SHA256: 'alex@email.com', AAID_MD5: '1234567' },
+ { EMAIL_SHA256: 'amy@abc.com', AAID_MD5: '1234568' },
+ { EMAIL_SHA256: 'van@abc.com', AAID_MD5: '1234569' },
],
remove: [
- {
- EMAIL_SHA256: 'alex@email.com',
- AAID_MD5: '1234570',
- },
- {
- EMAIL_SHA256: 'amy@abc.com',
- AAID_MD5: '1234571',
- },
- {
- EMAIL_SHA256: 'van@abc.com',
- AAID_MD5: '1234572',
- },
+ { EMAIL_SHA256: 'alex@email.com', AAID_MD5: '1234570' },
+ { EMAIL_SHA256: 'amy@abc.com', AAID_MD5: '1234571' },
+ { EMAIL_SHA256: 'van@abc.com', AAID_MD5: '1234572' },
],
},
},
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
externalId: [
- {
- type: 'TIKTOK_AUDIENCE-23856594064540489',
- identifierType: 'EMAIL_SHA256',
- },
+ { type: 'TIKTOK_AUDIENCE-23856594064540489', identifierType: 'EMAIL_SHA256' },
],
destinationFields: 'EMAIL_SHA256, AAID_MD5',
},
@@ -129,17 +83,11 @@ export const data = [
},
metadata: {
jobId: 2,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -177,14 +125,9 @@ export const data = [
},
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
externalId: [
- {
- type: 'TIKTOK_AUDIENCE-23856594064540489',
- identifierType: 'EMAIL_SHA256',
- },
+ { type: 'TIKTOK_AUDIENCE-23856594064540489', identifierType: 'EMAIL_SHA256' },
],
destinationFields:
'EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5',
@@ -193,17 +136,11 @@ export const data = [
},
metadata: {
jobId: 3,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -237,14 +174,9 @@ export const data = [
},
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
externalId: [
- {
- type: 'TIKTOK_AUDIENCE-23856594064540489',
- identifierType: 'EMAIL_SHA256',
- },
+ { type: 'TIKTOK_AUDIENCE-23856594064540489', identifierType: 'EMAIL_SHA256' },
],
destinationFields:
'EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5',
@@ -253,17 +185,11 @@ export const data = [
},
metadata: {
jobId: 4,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -296,14 +222,9 @@ export const data = [
},
context: {
ip: '14.5.67.21',
- library: {
- name: 'http',
- },
+ library: { name: 'http' },
externalId: [
- {
- type: 'TIKTOK_AUDIENCE-23856594064540489',
- identifierType: 'EMAIL_SHA256',
- },
+ { type: 'TIKTOK_AUDIENCE-23856594064540489', identifierType: 'EMAIL_SHA256' },
],
destinationFields:
'EMAIL_SHA256, PHONE_SHA256, IDFA_SHA256, AAID_SHA256, AAID_MD, IDFA_MD5',
@@ -312,17 +233,11 @@ export const data = [
},
metadata: {
jobId: 1524545,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -347,11 +262,7 @@ export const data = [
error: 'message Type is not present. Aborting message.',
batched: false,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -363,10 +274,8 @@ export const data = [
metadata: [
{
jobId: 1524545,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
],
statTags: {
@@ -468,11 +377,7 @@ export const data = [
],
batched: true,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -484,10 +389,8 @@ export const data = [
metadata: [
{
jobId: 1,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
],
statusCode: 200,
@@ -605,11 +508,7 @@ export const data = [
],
batched: true,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -621,10 +520,8 @@ export const data = [
metadata: [
{
jobId: 2,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
],
statusCode: 200,
@@ -635,10 +532,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
- headers: {
- 'Access-Token': 'dummyAccessToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Access-Token': 'dummyAccessToken', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -709,11 +603,7 @@ export const data = [
},
batched: true,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -725,10 +615,8 @@ export const data = [
metadata: [
{
jobId: 3,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
],
statusCode: 200,
@@ -739,10 +627,7 @@ export const data = [
type: 'REST',
method: 'POST',
endpoint: 'https://business-api.tiktok.com/open_api/v1.3/segment/mapping/',
- headers: {
- 'Access-Token': 'dummyAccessToken',
- 'Content-Type': 'application/json',
- },
+ headers: { 'Access-Token': 'dummyAccessToken', 'Content-Type': 'application/json' },
params: {},
body: {
JSON: {
@@ -801,11 +686,7 @@ export const data = [
},
batched: true,
destination: {
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
Config: {
isHashRequired: true,
registerDeviceOrBrowserApiKey: true,
@@ -817,10 +698,8 @@ export const data = [
metadata: [
{
jobId: 4,
- secret: {
- accessToken: 'dummyAccessToken',
- advertiserIds: ['dummyAdverTiserID'],
- },
+ secret: { accessToken: 'dummyAccessToken', advertiserIds: ['dummyAdverTiserID'] },
+ userId: 'u1',
},
],
statusCode: 200,
diff --git a/test/integrations/destinations/trengo/router/data.ts b/test/integrations/destinations/trengo/router/data.ts
index eeefb053a86..f7b50220363 100644
--- a/test/integrations/destinations/trengo/router/data.ts
+++ b/test/integrations/destinations/trengo/router/data.ts
@@ -27,49 +27,25 @@ export const data = [
name: 'generic_x86',
type: 'android',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.1-beta.1',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.1-beta.1' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '8.1.0',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '8.1.0' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: 'anon_id_success',
- },
+ traits: { anonymousId: 'anon_id_success' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)',
},
event: 'Product Purchased',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: 'id1',
- properties: {
- name: 'Test Product',
- phone: '9830311521',
- },
+ properties: { name: 'Test Product', phone: '9830311521' },
originalTimestamp: '2020-12-17T21:00:59.176Z',
type: 'track',
sentAt: '2020-03-12T09:05:03.421Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
apiToken: 'trengo_integration_test_api_token',
@@ -77,29 +53,12 @@ export const data = [
channelIdentifier: 'phone',
enableDedup: true,
eventTemplateMap: [
- {
- from: 'Product Purchased',
- to: '{{event}} from Rudderstack',
- },
- {
- from: 'checkedOut',
- to: 'Total cart value {{value}} shipped',
- },
- {
- from: 'Order Completed',
- to: 'Completed Order',
- },
- {
- from: 'Stress Test',
- },
- {
- from: 'Stress test2',
- to: '',
- },
- {
- from: 'Stress test3',
- to: '{event} Stress test',
- },
+ { from: 'Product Purchased', to: '{{event}} from Rudderstack' },
+ { from: 'checkedOut', to: 'Total cart value {{value}} shipped' },
+ { from: 'Order Completed', to: 'Completed Order' },
+ { from: 'Stress Test' },
+ { from: 'Stress test2', to: '' },
+ { from: 'Stress test3', to: '{event} Stress test' },
],
},
secretConfig: {},
@@ -170,21 +129,14 @@ export const data = [
},
params: {},
body: {
- JSON: {
- contact_id: 90002431001,
- channel_id: 'trengo_phone_channel',
- },
+ JSON: { contact_id: 90002431001, channel_id: 'trengo_phone_channel' },
XML: {},
JSON_ARRAY: {},
FORM: {},
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -194,29 +146,12 @@ export const data = [
channelIdentifier: 'phone',
enableDedup: true,
eventTemplateMap: [
- {
- from: 'Product Purchased',
- to: '{{event}} from Rudderstack',
- },
- {
- from: 'checkedOut',
- to: 'Total cart value {{value}} shipped',
- },
- {
- from: 'Order Completed',
- to: 'Completed Order',
- },
- {
- from: 'Stress Test',
- },
- {
- from: 'Stress test2',
- to: '',
- },
- {
- from: 'Stress test3',
- to: '{event} Stress test',
- },
+ { from: 'Product Purchased', to: '{{event}} from Rudderstack' },
+ { from: 'checkedOut', to: 'Total cart value {{value}} shipped' },
+ { from: 'Order Completed', to: 'Completed Order' },
+ { from: 'Stress Test' },
+ { from: 'Stress test2', to: '' },
+ { from: 'Stress test3', to: '{event} Stress test' },
],
},
secretConfig: {},
@@ -283,10 +218,7 @@ export const data = [
userId: 'randomUserId',
type: 'identify',
context: {
- traits: {
- name: 'Jimothy Halpert',
- email: 'j@d.com',
- },
+ traits: { name: 'Jimothy Halpert', email: 'j@d.com' },
ip: '14.5.67.21',
app: {
build: '1',
@@ -301,33 +233,16 @@ export const data = [
name: 'generic_x86',
type: 'android',
},
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '0.1.4',
- },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '0.1.4' },
locale: 'en-US',
- network: {
- carrier: 'Android',
- bluetooth: false,
- cellular: true,
- wifi: true,
- },
- os: {
- name: 'Android',
- version: '9',
- },
- screen: {
- density: 420,
- height: 1794,
- width: 1080,
- },
+ network: { carrier: 'Android', bluetooth: false, cellular: true, wifi: true },
+ os: { name: 'Android', version: '9' },
+ screen: { density: 420, height: 1794, width: 1080 },
timezone: 'Asia/Kolkata',
},
timestamp: '2020-02-02T00:23:09.544Z',
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
apiToken: 'trengo_integration_test_api_token',
@@ -335,29 +250,12 @@ export const data = [
channelIdentifier: 'email',
enableDedup: true,
eventTemplateMap: [
- {
- from: 'Product Purchased',
- to: '{{event}} from Rudderstack',
- },
- {
- from: 'checkedOut',
- to: 'Total cart value {{value}} shipped',
- },
- {
- from: 'Order Completed',
- to: 'Completed Order',
- },
- {
- from: 'Stress Test',
- },
- {
- from: 'Stress test2',
- to: '',
- },
- {
- from: 'Stress test3',
- to: '{event} Stress test',
- },
+ { from: 'Product Purchased', to: '{{event}} from Rudderstack' },
+ { from: 'checkedOut', to: 'Total cart value {{value}} shipped' },
+ { from: 'Order Completed', to: 'Completed Order' },
+ { from: 'Stress Test' },
+ { from: 'Stress test2', to: '' },
+ { from: 'Stress test3', to: '{event} Stress test' },
],
},
secretConfig: {},
@@ -439,11 +337,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -453,29 +347,12 @@ export const data = [
channelIdentifier: 'email',
enableDedup: true,
eventTemplateMap: [
- {
- from: 'Product Purchased',
- to: '{{event}} from Rudderstack',
- },
- {
- from: 'checkedOut',
- to: 'Total cart value {{value}} shipped',
- },
- {
- from: 'Order Completed',
- to: 'Completed Order',
- },
- {
- from: 'Stress Test',
- },
- {
- from: 'Stress test2',
- to: '',
- },
- {
- from: 'Stress test3',
- to: '{event} Stress test',
- },
+ { from: 'Product Purchased', to: '{{event}} from Rudderstack' },
+ { from: 'checkedOut', to: 'Total cart value {{value}} shipped' },
+ { from: 'Order Completed', to: 'Completed Order' },
+ { from: 'Stress Test' },
+ { from: 'Stress test2', to: '' },
+ { from: 'Stress test3', to: '{event} Stress test' },
],
},
secretConfig: {},
diff --git a/test/integrations/destinations/user/router/data.ts b/test/integrations/destinations/user/router/data.ts
index 30bcdf2688f..acdb5c953e4 100644
--- a/test/integrations/destinations/user/router/data.ts
+++ b/test/integrations/destinations/user/router/data.ts
@@ -16,9 +16,7 @@ export const data = [
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
userId: 'user@123',
groupId: 'group@795',
messageId: '022bb90c-bbac-11e4-8dfc-aa07a5b093db',
@@ -39,9 +37,7 @@ export const data = [
},
type: 'group',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
destination: {
Config: {
apiKey: 'dummyApiKey',
@@ -77,10 +73,7 @@ export const data = [
body: {
XML: {},
FORM: {},
- JSON: {
- user_id: 52,
- user_custom_id: 'user@123',
- },
+ JSON: { user_id: 52, user_custom_id: 'user@123' },
JSON_ARRAY: {},
},
type: 'REST',
@@ -95,11 +88,7 @@ export const data = [
version: '1',
endpoint: 'https://commander.user.com/api/public/companies/21/add_member/',
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -154,19 +143,10 @@ export const data = [
useroccupation: 'mechanical engineer',
},
},
- traits: {
- googleUrl: 'www.google.com',
- },
- integrations: {
- All: true,
- user: {
- lookup: 'email',
- },
- },
- },
- metadata: {
- jobId: 2,
+ traits: { googleUrl: 'www.google.com' },
+ integrations: { All: true, user: { lookup: 'email' } },
},
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
apiKey: 'dummyApiKey',
@@ -229,11 +209,7 @@ export const data = [
version: '1',
endpoint: 'https://commander.user.com/api/public/users/59/',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/userlist/router/data.ts b/test/integrations/destinations/userlist/router/data.ts
new file mode 100644
index 00000000000..2f2d0278657
--- /dev/null
+++ b/test/integrations/destinations/userlist/router/data.ts
@@ -0,0 +1,330 @@
+import { FEATURES } from '../../../../../src/v0/util/tags';
+
+export const data = [
+ {
+ name: 'userlist',
+ description: 'Test 0',
+ feature: FEATURES.ROUTER,
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ user_properties: {
+ prop1: 'val1',
+ prop2: 'val2',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ traits: {
+ anonymousId: 'anon-id',
+ email: 'test@gmail.com',
+ address: {
+ city: 'NY',
+ country: 'USA',
+ postalCode: 712136,
+ state: 'CA',
+ street: '',
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ metadata: {
+ jobId: 1,
+ },
+ destination: {
+ Config: {
+ pushKey: 'userlist-push-key',
+ },
+ },
+ },
+ {
+ message: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event',
+ properties: {
+ user_actual_role: 'system_admin',
+ user_actual_id: 12345,
+ user_time_spent: 50000,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ metadata: {
+ jobId: 2,
+ },
+ destination: {
+ Config: {
+ pushKey: 'userlist-push-key',
+ },
+ },
+ },
+ ],
+ destType: 'userlist',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ JSON: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ anonymousId: '123456',
+ email: 'test@rudderstack.com',
+ address: {
+ city: 'kolkata',
+ country: 'India',
+ postalCode: 712136,
+ state: 'WB',
+ street: '',
+ },
+ ip: '0.0.0.0',
+ age: 26,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ user_properties: {
+ prop1: 'val1',
+ prop2: 'val2',
+ },
+ type: 'identify',
+ messageId: '84e26acc-56a5-4835-8233-591137fca468',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ anonymousId: '123456',
+ userId: '123456',
+ integrations: {
+ All: true,
+ },
+ traits: {
+ anonymousId: 'anon-id',
+ email: 'test@gmail.com',
+ address: {
+ city: 'NY',
+ country: 'USA',
+ postalCode: 712136,
+ state: 'CA',
+ street: '',
+ },
+ },
+ sentAt: '2019-10-14T09:03:22.563Z',
+ },
+ FORM: {},
+ },
+ files: {},
+ endpoint: 'https://incoming.userlist.com/rudderstack/events',
+ headers: {
+ Authorization: 'Push userlist-push-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ params: {},
+ type: 'REST',
+ method: 'POST',
+ statusCode: 200,
+ },
+ metadata: [
+ {
+ jobId: 1,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ pushKey: 'userlist-push-key',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ body: {
+ XML: {},
+ JSON_ARRAY: {},
+ JSON: {
+ channel: 'web',
+ context: {
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ traits: {
+ email: 'test@rudderstack.com',
+ anonymousId: '12345',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ },
+ type: 'track',
+ messageId: 'ec5481b6-a926-4d2e-b293-0b3a77c4d3be',
+ originalTimestamp: '2019-10-14T11:15:18.300Z',
+ anonymousId: '00000000000000000000000000',
+ userId: '12345',
+ event: 'test track event',
+ properties: {
+ user_actual_role: 'system_admin',
+ user_actual_id: 12345,
+ user_time_spent: 50000,
+ },
+ integrations: {
+ All: true,
+ },
+ sentAt: '2019-10-14T11:15:53.296Z',
+ },
+ FORM: {},
+ },
+ files: {},
+ endpoint: 'https://incoming.userlist.com/rudderstack/events',
+ headers: {
+ Authorization: 'Push userlist-push-key',
+ 'Content-Type': 'application/json',
+ },
+ version: '1',
+ params: {},
+ type: 'REST',
+ method: 'POST',
+ statusCode: 200,
+ },
+ metadata: [
+ {
+ jobId: 2,
+ },
+ ],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ Config: {
+ pushKey: 'userlist-push-key',
+ },
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/vero/processor/data.ts b/test/integrations/destinations/vero/processor/data.ts
index 7834f0a5415..cf210f38be7 100644
--- a/test/integrations/destinations/vero/processor/data.ts
+++ b/test/integrations/destinations/vero/processor/data.ts
@@ -1,818 +1,808 @@
export const data = [
- {
- "name": "vero",
- "description": "Test 0",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "homwTown": "kanpur",
- "age": "24"
- }
- },
- "type": "Identify",
- "userId": "yash001",
- "originalTimestamp": "2019-10-14T09:03:17.562Z"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "yash001",
- "data": {
- "homwTown": "kanpur",
- "age": "24"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 1",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "email": "user1001@tech.com"
- }
- },
- "type": "Identify",
- "userId": "user1001"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "user1001",
- "email": "user1001@tech.com",
- "data": {},
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 2",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "email": "user1002@tech.com"
- }
- },
- "type": "Identify",
- "anonymousId": "b4ffheww8eisndbdjgdewifewfgerwibderv"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "b4ffheww8eisndbdjgdewifewfgerwibderv",
- "email": "user1002@tech.com",
- "data": {},
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 3",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "address": "Caravela Beach Goa",
- "homwTown": "Mawsynram",
- "email": "user1005@tech.com"
- }
- },
- "integrations": {
- "vero": {
- "tags": {
- "add": [
- "a",
- "b"
- ]
- }
- }
- },
- "type": "Identify",
- "userId": "fprediruser001"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "fprediruser001",
- "email": "user1005@tech.com",
- "data": {
- "address": "Caravela Beach Goa",
- "homwTown": "Mawsynram"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.getvero.com/api/v2/users/tags/edit",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "fprediruser001",
- "auth_token": "testAuthToken",
- "add": [
- "a",
- "b"
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 4",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "event": "Random event with nonexisting userId and email",
- "properties": {
- "movieWatched": 3,
- "gamesPlayed": 4,
- "email": "eventIdn01@sample.com"
- },
- "type": "track",
- "userId": "eventIdn01"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/events/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "id": "eventIdn01",
- "email": "eventIdn01@sample.com"
- },
- "event_name": "Random event with nonexisting userId and email",
- "data": {
- "movieWatched": 3,
- "gamesPlayed": 4,
- "email": "eventIdn01@sample.com"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 5",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "event": "Random event with existing userId and some tags removed",
- "properties": {
- "movieWatched": 3,
- "gamesPlayed": 4,
- "email": "eventIdn01@sample.com"
- },
- "integrations": {
- "Vero": {
- "tags": {
- "remove": [
- "a"
- ]
- }
- }
- },
- "type": "track",
- "userId": "fprediruser001"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/events/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "id": "fprediruser001",
- "email": "eventIdn01@sample.com"
- },
- "event_name": "Random event with existing userId and some tags removed",
- "data": {
- "movieWatched": 3,
- "gamesPlayed": 4,
- "email": "eventIdn01@sample.com"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- },
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.getvero.com/api/v2/users/tags/edit",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "fprediruser001",
- "auth_token": "testAuthToken",
- "remove": [
- "a"
- ]
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 6",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "type": "alias",
- "userId": "sample101",
- "previousId": "newsamplel01"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "PUT",
- "endpoint": "https://api.getvero.com/api/v2/users/reidentify",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "new_id": "sample101",
- "id": "newsamplel01",
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 7",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "email": "user1001@tech.com"
- },
- "os": {
- "name": "android"
- },
- "device": {
- "token": "qwertyuioiuytrewwertyu",
- "name": "Mi"
- }
- },
- "type": "Identify",
- "userId": "user1001"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "user1001",
- "email": "user1001@tech.com",
- "data": {},
- "channels": {
- "platform": "android",
- "address": "qwertyuioiuytrewwertyu",
- "device": "Mi",
- "type": "push"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 8",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "context": {
- "traits": {
- "email": "user1001@tech.com"
- },
- "device": {
- "token": "qwertyuioiuytrewwertyu",
- "name": "Mi"
- }
- },
- "type": "Identify",
- "userId": "user1001"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "user1001",
- "email": "user1001@tech.com",
- "data": {},
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 9",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "event": "unsubscribe",
- "type": "track",
- "userId": "eventIdn01"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/users/unsubscribe",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "id": "eventIdn01",
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 10",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "name": "Rudderstack",
- "properties": {
- "title": "rudderstack",
- "path": "/"
- },
- "type": "page",
- "userId": "eventIdn01"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "output": {
- "version": "1",
- "type": "REST",
- "method": "POST",
- "endpoint": "https://api.getvero.com/api/v2/events/track",
- "headers": {},
- "params": {},
- "body": {
- "JSON": {
- "identity": {
- "id": "eventIdn01"
- },
- "event_name": "Viewed Rudderstack Page",
- "data": {
- "title": "rudderstack",
- "path": "/"
- },
- "auth_token": "testAuthToken"
- },
- "JSON_ARRAY": {},
- "XML": {},
- "FORM": {}
- },
- "files": {},
- "userId": ""
- },
- "statusCode": 200
- }
- ]
- }
- }
- },
- {
- "name": "vero",
- "description": "Test 11",
- "feature": "processor",
- "module": "destination",
- "version": "v0",
- "input": {
- "request": {
- "body": [
- {
- "destination": {
- "Config": {
- "authToken": "testAuthToken"
- }
- },
- "message": {
- "groupId": "1234",
- "traits": {
- "name": "MyGroup",
- "industry": "IT",
- "employees": 450,
- "plan": "basic"
- },
- "type": "group",
- "userId": "eventIdn01"
- }
- }
- ]
- }
- },
- "output": {
- "response": {
- "status": 200,
- "body": [
- {
- "statusCode": 400,
- "error": "Event type group is not supported",
- "statTags": {
- "errorCategory": "dataValidation",
- "errorType": "instrumentation",
- "destType": "VERO",
- "module": "destination",
- "implementation": "native",
- "feature": "processor"
- }
- }
- ]
- }
- }
- }
-]
\ No newline at end of file
+ {
+ name: 'vero',
+ description: 'Test 0',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ homwTown: 'kanpur',
+ age: '24',
+ },
+ },
+ type: 'Identify',
+ userId: 'yash001',
+ originalTimestamp: '2019-10-14T09:03:17.562Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'yash001',
+ data: {
+ homwTown: 'kanpur',
+ age: '24',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 1',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ email: 'user1001@tech.com',
+ },
+ },
+ type: 'Identify',
+ userId: 'user1001',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'user1001',
+ email: 'user1001@tech.com',
+ data: {},
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 2',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ email: 'user1002@tech.com',
+ },
+ },
+ type: 'Identify',
+ anonymousId: 'b4ffheww8eisndbdjgdewifewfgerwibderv',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'b4ffheww8eisndbdjgdewifewfgerwibderv',
+ email: 'user1002@tech.com',
+ data: {},
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 3',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ address: 'Caravela Beach Goa',
+ homwTown: 'Mawsynram',
+ email: 'user1005@tech.com',
+ },
+ },
+ integrations: {
+ vero: {
+ tags: {
+ add: ['a', 'b'],
+ },
+ },
+ },
+ type: 'Identify',
+ userId: 'fprediruser001',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'fprediruser001',
+ email: 'user1005@tech.com',
+ data: {
+ address: 'Caravela Beach Goa',
+ homwTown: 'Mawsynram',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.getvero.com/api/v2/users/tags/edit',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'fprediruser001',
+ auth_token: 'testAuthToken',
+ add: ['a', 'b'],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 4',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ event: 'Random event with nonexisting userId and email',
+ properties: {
+ movieWatched: 3,
+ gamesPlayed: 4,
+ email: 'eventIdn01@sample.com',
+ },
+ type: 'track',
+ userId: 'eventIdn01',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/events/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ id: 'eventIdn01',
+ email: 'eventIdn01@sample.com',
+ },
+ event_name: 'Random event with nonexisting userId and email',
+ data: {
+ movieWatched: 3,
+ gamesPlayed: 4,
+ email: 'eventIdn01@sample.com',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 5',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ event: 'Random event with existing userId and some tags removed',
+ properties: {
+ movieWatched: 3,
+ gamesPlayed: 4,
+ email: 'eventIdn01@sample.com',
+ },
+ integrations: {
+ Vero: {
+ tags: {
+ remove: ['a'],
+ },
+ },
+ },
+ type: 'track',
+ userId: 'fprediruser001',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/events/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ id: 'fprediruser001',
+ email: 'eventIdn01@sample.com',
+ },
+ event_name: 'Random event with existing userId and some tags removed',
+ data: {
+ movieWatched: 3,
+ gamesPlayed: 4,
+ email: 'eventIdn01@sample.com',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.getvero.com/api/v2/users/tags/edit',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'fprediruser001',
+ auth_token: 'testAuthToken',
+ remove: ['a'],
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 6',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ type: 'alias',
+ userId: 'sample101',
+ previousId: 'newsamplel01',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.getvero.com/api/v2/users/reidentify',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ new_id: 'sample101',
+ id: 'newsamplel01',
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 7',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ email: 'user1001@tech.com',
+ },
+ os: {
+ name: 'android',
+ },
+ device: {
+ token: 'qwertyuioiuytrewwertyu',
+ name: 'Mi',
+ },
+ },
+ type: 'Identify',
+ userId: 'user1001',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'user1001',
+ email: 'user1001@tech.com',
+ data: {},
+ channels: {
+ platform: 'android',
+ address: 'qwertyuioiuytrewwertyu',
+ device: 'Mi',
+ type: 'push',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 8',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ context: {
+ traits: {
+ email: 'user1001@tech.com',
+ },
+ device: {
+ token: 'qwertyuioiuytrewwertyu',
+ name: 'Mi',
+ },
+ },
+ type: 'Identify',
+ userId: 'user1001',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'user1001',
+ email: 'user1001@tech.com',
+ data: {},
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 9',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ event: 'unsubscribe',
+ type: 'track',
+ userId: 'eventIdn01',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/users/unsubscribe',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ id: 'eventIdn01',
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 10',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ name: 'Rudderstack',
+ properties: {
+ title: 'rudderstack',
+ path: '/',
+ },
+ type: 'page',
+ userId: 'eventIdn01',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.getvero.com/api/v2/events/track',
+ headers: {},
+ params: {},
+ body: {
+ JSON: {
+ identity: {
+ id: 'eventIdn01',
+ },
+ event_name: 'Viewed Rudderstack Page',
+ data: {
+ title: 'rudderstack',
+ path: '/',
+ },
+ auth_token: 'testAuthToken',
+ },
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {},
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'vero',
+ description: 'Test 11',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ authToken: 'testAuthToken',
+ },
+ },
+ message: {
+ groupId: '1234',
+ traits: {
+ name: 'MyGroup',
+ industry: 'IT',
+ employees: 450,
+ plan: 'basic',
+ },
+ type: 'group',
+ userId: 'eventIdn01',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ statusCode: 400,
+ error: 'Event type group is not supported',
+ statTags: {
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ destType: 'VERO',
+ module: 'destination',
+ implementation: 'native',
+ feature: 'processor',
+ },
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/vero/router/data.ts b/test/integrations/destinations/vero/router/data.ts
index 17aba359d16..ca23f22feb5 100644
--- a/test/integrations/destinations/vero/router/data.ts
+++ b/test/integrations/destinations/vero/router/data.ts
@@ -1,10 +1,8 @@
-import { FEATURES } from '../../../../../src/v0/util/tags';
-
export const data = [
{
name: 'vero',
description: 'Test 0',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -12,20 +10,10 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: {
- jobId: 1,
- },
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
- context: {
- traits: {
- email: 'user001@tech.com',
- },
- },
+ context: { traits: { email: 'user001@tech.com' } },
type: 'Identify',
userId: 'user001',
},
@@ -65,16 +53,8 @@ export const data = [
files: {},
},
],
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: [
- {
- jobId: 1,
- },
- ],
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: [{ jobId: 1, userId: 'u1' }],
statusCode: 200,
},
],
@@ -85,7 +65,7 @@ export const data = [
{
name: 'vero',
description: 'Test 1',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -93,20 +73,10 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: {
- jobId: 2,
- },
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
- context: {
- traits: {
- email: 'user002@tech.com',
- },
- },
+ context: { traits: { email: 'user002@tech.com' } },
type: 'Identify',
anonymousId: 'b4ffheww8eisndbdjgdewifewfgerwibderv',
},
@@ -146,16 +116,8 @@ export const data = [
files: {},
},
],
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: [
- {
- jobId: 2,
- },
- ],
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: [{ jobId: 2, userId: 'u1' }],
statusCode: 200,
},
],
@@ -166,7 +128,7 @@ export const data = [
{
name: 'vero',
description: 'Test 2',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -174,14 +136,8 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: {
- jobId: 3,
- },
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
context: {
traits: {
@@ -190,13 +146,7 @@ export const data = [
email: 'user005@tech.com',
},
},
- integrations: {
- vero: {
- tags: {
- add: ['a', 'b'],
- },
- },
- },
+ integrations: { vero: { tags: { add: ['a', 'b'] } } },
type: 'Identify',
userId: 'fprediruser001',
},
@@ -226,10 +176,7 @@ export const data = [
JSON: {
id: 'fprediruser001',
email: 'user005@tech.com',
- data: {
- address: 'Caravela Beach Goa',
- homwTown: 'Mawsynram',
- },
+ data: { address: 'Caravela Beach Goa', homwTown: 'Mawsynram' },
auth_token: 'testAuthToken',
},
JSON_ARRAY: {},
@@ -246,11 +193,7 @@ export const data = [
headers: {},
params: {},
body: {
- JSON: {
- auth_token: 'testAuthToken',
- id: 'fprediruser001',
- add: ['a', 'b'],
- },
+ JSON: { auth_token: 'testAuthToken', id: 'fprediruser001', add: ['a', 'b'] },
JSON_ARRAY: {},
XML: {},
FORM: {},
@@ -258,16 +201,8 @@ export const data = [
files: {},
},
],
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: [
- {
- jobId: 3,
- },
- ],
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: [{ jobId: 3, userId: 'u1' }],
statusCode: 200,
},
],
@@ -278,7 +213,7 @@ export const data = [
{
name: 'vero',
description: 'Test 3',
- feature: FEATURES.ROUTER,
+ feature: 'router',
module: 'destination',
version: 'v0',
input: {
@@ -286,21 +221,11 @@ export const data = [
body: {
input: [
{
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: {
- jobId: 4,
- },
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: { jobId: 4, userId: 'u1' },
message: {
event: 'Random event with nonexisting userId and email',
- properties: {
- movieWatched: 3,
- gamesPlayed: 4,
- email: 'eventIdn02@sample.com',
- },
+ properties: { movieWatched: 3, gamesPlayed: 4, email: 'eventIdn02@sample.com' },
type: 'track',
userId: 'eventIdn01',
},
@@ -328,16 +253,9 @@ export const data = [
params: {},
body: {
JSON: {
- identity: {
- id: 'eventIdn01',
- email: 'eventIdn02@sample.com',
- },
+ identity: { id: 'eventIdn01', email: 'eventIdn02@sample.com' },
event_name: 'Random event with nonexisting userId and email',
- data: {
- movieWatched: 3,
- gamesPlayed: 4,
- email: 'eventIdn02@sample.com',
- },
+ data: { movieWatched: 3, gamesPlayed: 4, email: 'eventIdn02@sample.com' },
auth_token: 'testAuthToken',
},
JSON_ARRAY: {},
@@ -347,16 +265,8 @@ export const data = [
files: {},
},
],
- destination: {
- Config: {
- authToken: 'testAuthToken',
- },
- },
- metadata: [
- {
- jobId: 4,
- },
- ],
+ destination: { Config: { authToken: 'testAuthToken' } },
+ metadata: [{ jobId: 4, userId: 'u1' }],
statusCode: 200,
},
],
diff --git a/test/integrations/destinations/webhook/router/data.ts b/test/integrations/destinations/webhook/router/data.ts
index 291fc5ffba6..a082eb12f17 100644
--- a/test/integrations/destinations/webhook/router/data.ts
+++ b/test/integrations/destinations/webhook/router/data.ts
@@ -19,25 +19,15 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
additional_bet_index: 0,
@@ -100,28 +90,16 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
destination: {
Config: {
webhookUrl: 'http://6b0e6a60.ngrok.io',
headers: [
- {
- from: '',
- to: '',
- },
- {
- from: 'test2',
- to: 'value2',
- },
+ { from: '', to: '' },
+ { from: 'test2', to: 'value2' },
],
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
},
{
@@ -134,25 +112,15 @@ export const data = [
model: 'Redmi 6',
name: 'xiaomi',
},
- network: {
- carrier: 'Banglalink',
- },
- os: {
- name: 'android',
- version: '8.1.0',
- },
+ network: { carrier: 'Banglalink' },
+ os: { name: 'android', version: '8.1.0' },
traits: {
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
+ address: { city: 'Dhaka', country: 'Bangladesh' },
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
},
},
event: 'spin_result',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
properties: {
additional_bet_index: 0,
@@ -215,18 +183,10 @@ export const data = [
versionSessionCount: 2,
},
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 3, userId: 'u1' },
destination: {
- Config: {
- webhookUrl: 'https://6b0e6a60.ngrok.io/n',
- },
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ Config: { webhookUrl: 'https://6b0e6a60.ngrok.io/n' },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
},
],
@@ -267,9 +227,7 @@ export const data = [
versionSessionCount: 2,
game_name: 'FireEagleSlots',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
event: 'spin_result',
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
@@ -282,18 +240,10 @@ export const data = [
},
traits: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
- },
- os: {
- version: '8.1.0',
- name: 'android',
- },
- network: {
- carrier: 'Banglalink',
+ address: { city: 'Dhaka', country: 'Bangladesh' },
},
+ os: { version: '8.1.0', name: 'android' },
+ network: { carrier: 'Banglalink' },
},
type: 'track',
properties: {
@@ -340,41 +290,24 @@ export const data = [
files: {},
endpoint: 'http://6b0e6a60.ngrok.io',
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- headers: {
- 'content-type': 'application/json',
- test2: 'value2',
- },
+ headers: { 'content-type': 'application/json', test2: 'value2' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
Config: {
webhookUrl: 'http://6b0e6a60.ngrok.io',
headers: [
- {
- from: '',
- to: '',
- },
- {
- from: 'test2',
- to: 'value2',
- },
+ { from: '', to: '' },
+ { from: 'test2', to: 'value2' },
],
},
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
},
{
@@ -404,9 +337,7 @@ export const data = [
versionSessionCount: 2,
game_name: 'FireEagleSlots',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
event: 'spin_result',
message_id: 'a80f82be-9bdc-4a9f-b2a5-15621ee41df8',
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
@@ -419,18 +350,10 @@ export const data = [
},
traits: {
anonymousId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- address: {
- city: 'Dhaka',
- country: 'Bangladesh',
- },
- },
- os: {
- version: '8.1.0',
- name: 'android',
- },
- network: {
- carrier: 'Banglalink',
+ address: { city: 'Dhaka', country: 'Bangladesh' },
},
+ os: { version: '8.1.0', name: 'android' },
+ network: { carrier: 'Banglalink' },
},
type: 'track',
properties: {
@@ -477,30 +400,18 @@ export const data = [
files: {},
endpoint: 'https://6b0e6a60.ngrok.io/n',
userId: 'c82cbdff-e5be-4009-ac78-cdeea09ab4b1',
- headers: {
- 'content-type': 'application/json',
- },
+ headers: { 'content-type': 'application/json' },
version: '1',
params: {},
type: 'REST',
method: 'POST',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
- Config: {
- webhookUrl: 'https://6b0e6a60.ngrok.io/n',
- },
- DestinationDefinition: {
- Config: {
- cdkV2Enabled: true,
- },
- },
+ Config: { webhookUrl: 'https://6b0e6a60.ngrok.io/n' },
+ DestinationDefinition: { Config: { cdkV2Enabled: true } },
},
},
],
diff --git a/test/integrations/destinations/woopra/router/data.ts b/test/integrations/destinations/woopra/router/data.ts
index 5a3b20bea6f..941f69c2fe9 100644
--- a/test/integrations/destinations/woopra/router/data.ts
+++ b/test/integrations/destinations/woopra/router/data.ts
@@ -13,30 +13,15 @@ export const data = [
message: {
anonymousId: '21e13f4bc7ceddad',
context: {
- app: {
- build: '4',
- name: 'RuddCDN',
- },
- device: {
- id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
- name: 'generic_x86_arm',
- },
- os: {
- name: 'Android',
- version: '9',
- },
+ app: { build: '4', name: 'RuddCDN' },
+ device: { id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a', name: 'generic_x86_arm' },
+ os: { name: 'Android', version: '9' },
timezone: 'Asia/Kolkata',
- traits: {
- anonymousId: '21e13f4bc7ceddad',
- },
+ traits: { anonymousId: '21e13f4bc7ceddad' },
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
- integrations: {
- woopra: {
- projectName: 'abc.com',
- },
- },
+ integrations: { woopra: { projectName: 'abc.com' } },
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-28T19:53:31.900Z',
traits: {
@@ -52,14 +37,8 @@ export const data = [
timestamp: '2020-09-29T14:50:29.907+05:30',
type: 'identify',
},
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: {
- jobId: 1,
- },
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: { jobId: 1, userId: 'u1' },
},
],
destType: 'woopra',
@@ -74,12 +53,7 @@ export const data = [
output: [
{
batchedRequest: {
- body: {
- XML: {},
- FORM: {},
- JSON: {},
- JSON_ARRAY: {},
- },
+ body: { XML: {}, FORM: {}, JSON: {}, JSON_ARRAY: {} },
type: 'REST',
files: {},
method: 'GET',
@@ -100,16 +74,8 @@ export const data = [
version: '1',
endpoint: 'https://www.woopra.com/track/identify',
},
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: [
- {
- jobId: 1,
- },
- ],
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
},
@@ -133,49 +99,26 @@ export const data = [
anonymousId: '21e13f4bc7ceddad',
channel: 'mobile',
context: {
- app: {
- build: '4',
- name: 'RuddCDN',
- },
- device: {
- id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
- name: 'generic_x86_arm',
- },
- library: {
- name: 'com.rudderstack.android.sdk.core',
- version: '1.0.6',
- },
- os: {
- name: 'Android',
- version: '9',
- },
+ app: { build: '4', name: 'RuddCDN' },
+ device: { id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a', name: 'generic_x86_arm' },
+ library: { name: 'com.rudderstack.android.sdk.core', version: '1.0.6' },
+ os: { name: 'Android', version: '9' },
timezone: 'Asia/Kolkata',
userAgent:
'Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)',
},
event: 'First Investment',
- integrations: {
- woopra: 'int.com',
- },
+ integrations: { woopra: 'int.com' },
messageId: '1601322811899-d9c7dd00-50dc-4364-95c8-e89423eb3cfb',
originalTimestamp: '2020-09-28T19:53:31.900Z',
- properties: {
- currency: 'EUR',
- revenue: 20.37566,
- },
+ properties: { currency: 'EUR', revenue: 20.37566 },
receivedAt: '2020-09-29T14:50:43.005+05:30',
sentAt: '2020-09-28T19:53:44.998Z',
timestamp: '2020-09-29T14:50:29.907+05:30',
type: 'track',
},
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: {
- jobId: 2,
- },
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: { jobId: 2, userId: 'u1' },
},
],
destType: 'woopra',
@@ -190,12 +133,7 @@ export const data = [
output: [
{
batchedRequest: {
- body: {
- XML: {},
- FORM: {},
- JSON: {},
- JSON_ARRAY: {},
- },
+ body: { XML: {}, FORM: {}, JSON: {}, JSON_ARRAY: {} },
type: 'REST',
files: {},
method: 'GET',
@@ -213,16 +151,8 @@ export const data = [
version: '1',
endpoint: 'https://www.woopra.com/track/ce',
},
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: [
- {
- jobId: 2,
- },
- ],
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
},
@@ -246,19 +176,11 @@ export const data = [
anonymousId: '21e13f4bc7ceddad',
channel: 'mobile',
event: 'First Investment',
- integrations: {
- woopra: 'int.com',
- },
+ integrations: { woopra: 'int.com' },
type: 'group',
},
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: {
- jobId: 3,
- },
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: { jobId: 3, userId: 'u1' },
},
],
destType: 'woopra',
@@ -272,16 +194,8 @@ export const data = [
body: {
output: [
{
- destination: {
- Config: {
- projectName: 'int.com',
- },
- },
- metadata: [
- {
- jobId: 3,
- },
- ],
+ destination: { Config: { projectName: 'int.com' } },
+ metadata: [{ jobId: 3, userId: 'u1' }],
statTags: {
errorCategory: 'dataValidation',
implementation: 'native',
diff --git a/test/integrations/destinations/wootric/network.ts b/test/integrations/destinations/wootric/network.ts
new file mode 100644
index 00000000000..1b51cc700c2
--- /dev/null
+++ b/test/integrations/destinations/wootric/network.ts
@@ -0,0 +1,182 @@
+export const networkCallsData = [
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/dummyId1?lookup_by_external_id=true',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ id: 486438462,
+ created_at: '2022-08-10 11:39:50 -0700',
+ updated_at: '2022-08-10 11:39:50 -0700',
+ email: 'dummyuser1@gmail.com',
+ last_surveyed: '2022-01-20 05:39:21 -0800',
+ external_created_at: 1611149961,
+ last_seen_at: null,
+ properties: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ },
+ phone_number: '+19123456789',
+ external_id: 'dummyId1',
+ last_response: null,
+ settings: {
+ email_nps: true,
+ mobile_nps: true,
+ web_nps: true,
+ force_mobile_survey: null,
+ force_web_survey: null,
+ surveys_disabled_by_end_user: null,
+ },
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/exclueFunTestId?lookup_by_external_id=true',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ id: 486336190,
+ created_at: '2022-08-10 07:30:50 -0700',
+ updated_at: '2022-08-10 10:12:46 -0700',
+ email: 'excludeUser@gmail.com',
+ last_surveyed: '2022-01-20 05:39:21 -0800',
+ external_created_at: 1579755367,
+ last_seen_at: null,
+ properties: {
+ city: 'Mumbai',
+ name: 'exclude test user',
+ email: 'excludeUser@gmail.com',
+ title: 'AD',
+ gender: 'Male',
+ company: 'Rockstar',
+ },
+ phone_number: '+18324671283',
+ external_id: 'exclueFunTestId',
+ last_response: null,
+ settings: {
+ email_nps: true,
+ mobile_nps: true,
+ web_nps: true,
+ force_mobile_survey: null,
+ force_web_survey: null,
+ surveys_disabled_by_end_user: null,
+ },
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/my-external-id-1234?lookup_by_external_id=true',
+ method: 'POST',
+ },
+ httpRes: {
+ status: 200,
+ data: {
+ type: 'error_list',
+ errors: [
+ {
+ status: 'record_not_found',
+ message: 'The record could not be found',
+ field: null,
+ },
+ ],
+ },
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/490635419',
+ method: 'GET',
+ },
+ httpRes: {
+ data: {
+ id: 490635419,
+ created_at: '2022-08-20 00:55:26 -0700',
+ updated_at: '2022-08-22 11:17:05 -0700',
+ email: 'firstuser@gmail.com',
+ last_surveyed: '2022-08-01 00:11:44 -0700',
+ external_created_at: 1661002761,
+ last_seen_at: null,
+ properties: {
+ Department: 'Marketing',
+ product_plan: 'Web',
+ 'revenue amount': '5000',
+ },
+ phone_number: '+8859133456781',
+ external_id: 'firstUserId123',
+ last_response: {
+ id: 101013218,
+ score: 9,
+ text: 'Good !!!',
+ survey: {
+ channel: 'web',
+ },
+ },
+ settings: {
+ email_nps: true,
+ mobile_nps: true,
+ web_nps: true,
+ force_mobile_survey: null,
+ force_web_survey: null,
+ surveys_disabled_by_end_user: null,
+ },
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/oauth/token?account_token=NPS-dummyToken',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ access_token: '2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ token_type: 'Bearer',
+ expires_in: 7200,
+ refresh_token: 'f4033a61742e84405a5ef8b2e09b82395dc041f0259fd5fb715fc196a1b9cd52',
+ scope: 'delete_account admin respond export read survey invalidate_response',
+ created_at: 1660292389,
+ },
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/dummyId2?lookup_by_external_id=true',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/v1/end_users/12345',
+ method: 'GET',
+ },
+ httpRes: {
+ status: 200,
+ },
+ },
+ {
+ httpReq: {
+ url: 'https://api.wootric.com/oauth/token?account_token=NPS-dummyToken12',
+ method: 'POST',
+ },
+ httpRes: {
+ data: {
+ error: 'Not found',
+ status: 404,
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/wootric/processor/data.ts b/test/integrations/destinations/wootric/processor/data.ts
new file mode 100644
index 00000000000..ae747e982d5
--- /dev/null
+++ b/test/integrations/destinations/wootric/processor/data.ts
@@ -0,0 +1,1852 @@
+export const data = [
+ {
+ name: 'wootric',
+ description: 'Wrong Account Token Passed',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken12',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {},
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error:
+ '{"message":"Access token could not be generated due to {\\"error\\":\\"Not found\\",\\"status\\":404}","destinationResponse":{"response":{"error":"Not found","status":404},"status":500}}',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'network',
+ errorType: 'retryable',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 500,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for creating user',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ email: 'dummyUser2@gmail.com',
+ phone: '+19123456777',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ email: 'dummyUser2@gmail.com',
+ phone_number: '+19123456777',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for creating user without-sending email and sending phone number',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ phone: '+19123456777',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ phone_number: '+19123456777',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for creating user without-sending phone number and sending email',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ email: 'dummyUser2@gmail.com',
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ email: 'dummyUser2@gmail.com',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for creating user without sending traits',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email/phone number are missing. At least one parameter must be provided',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for creating user without-sending (email and phone number)',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'email/phone number are missing. At least one parameter must be provided',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for updating existing user with wootric end user id',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ title: 'VP',
+ gender: 'Male',
+ },
+ externalId: [
+ {
+ type: 'wootricEndUserId',
+ id: '490635419',
+ },
+ ],
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/490635419',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ last_surveyed: '1642685961',
+ 'properties[Department]': 'Marketing',
+ 'properties[product_plan]': 'Web',
+ 'properties[revenue amount]': '5000',
+ 'properties[title]': 'VP',
+ 'properties[gender]': 'Male',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description:
+ 'Identify call for updating existing user with (wootric externalId/ rudderstack userId)',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ title: 'VP',
+ gender: 'Male',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ last_surveyed: '1642685961',
+ 'properties[title]': 'VP',
+ 'properties[gender]': 'Male',
+ 'properties[city]': 'Mumbai',
+ 'properties[name]': 'Dummy User 1',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Identify call for updating user traits/properties',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Udaipur',
+ name: 'Dummy User 1 New',
+ title: 'SDE-2',
+ gender: 'Male',
+ company: 'Rudderstack',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ last_surveyed: '1642685961',
+ 'properties[city]': 'Udaipur',
+ 'properties[name]': 'Dummy User 1 New',
+ 'properties[title]': 'SDE-2',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with existing userId and event type as create response',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create response',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462/responses',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ score: 7,
+ ip_address: '0.0.0.0',
+ origin_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ text: 'Simple, Easy to use, Reliable, Affordable Product',
+ created_at: '1611149961',
+ 'end_user[properties][city]': 'Mumbai',
+ 'end_user[properties][name]': 'Dummy User 1',
+ 'end_user[properties][title]': 'SDE',
+ 'end_user[properties][gender]': 'Male',
+ 'end_user[properties][company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with non-existing userId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create response',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No user found with userId : dummyId2',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with non-existing wootricEndUserId',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ externalId: [
+ {
+ type: 'wootricEndUserId',
+ id: '12345',
+ },
+ ],
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create response',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No user found with wootric end user Id : 12345',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description:
+ 'Track call with existing userId and event type as create response and score out of bound',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 12,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create response',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Invalid Score',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with existing userId and event type as create decline',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 9,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create decline',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ output: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462/declines',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ origin_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ },
+ },
+ files: {},
+ userId: '',
+ },
+ statusCode: 200,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with non-existing userId and event type as create decline',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ properties: {
+ feedbackScore: 9,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'create decline',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'No user found with userId : dummyId2',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with event type other than create response or decline',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ phone: '+19123456789',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ Wootric: {
+ eventType: 'random',
+ },
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event Type not supported',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+ {
+ name: 'wootric',
+ description: 'Track call with missing event type in integration object',
+ feature: 'processor',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: 'wootric-1234',
+ },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 3,
+ feedbackText: 'Too Slow!!!',
+ },
+ context: {
+ os: {
+ name: '',
+ version: '',
+ },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ phone: '+19123456789',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.2.20',
+ },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: {
+ All: true,
+ },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: [
+ {
+ error: 'Event Type is missing from Integration object',
+ statTags: {
+ destType: 'WOOTRIC',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ feature: 'processor',
+ implementation: 'native',
+ module: 'destination',
+ },
+ statusCode: 400,
+ },
+ ],
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/wootric/router/data.ts b/test/integrations/destinations/wootric/router/data.ts
new file mode 100644
index 00000000000..9af28f4f483
--- /dev/null
+++ b/test/integrations/destinations/wootric/router/data.ts
@@ -0,0 +1,1403 @@
+export const data = [
+ {
+ name: 'wootric',
+ description: 'Succesfull Idenitfy Call',
+ feature: 'router',
+ module: 'destination',
+ version: 'v0',
+ input: {
+ request: {
+ body: {
+ input: [
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 1, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ email: 'dummyUser2@gmail.com',
+ phone: '+19123456777',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 2, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ phone: '+19123456777',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 3, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ email: 'dummyUser2@gmail.com',
+ city: 'Bangalore',
+ name: 'Dummy User 2',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 5, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 6, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 7, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: { email: 'dummyuser1_01@gmail.com' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 8, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: { phone: '+19777777778' },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 9, userId: 'u1' },
+ message: {
+ type: 'identify',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Udaipur',
+ name: 'Dummy User 1 New',
+ title: 'SDE-2',
+ gender: 'Male',
+ company: 'Rudderstack',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 10, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'create response' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 11, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'create response' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 12, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 12,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'create response' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 13, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 9,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'create decline' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 14, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId2',
+ channel: 'web',
+ properties: {
+ feedbackScore: 9,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'create decline' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 15, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: {
+ feedbackScore: 7,
+ feedbackText: 'Simple, Easy to use, Reliable, Affordable Product',
+ },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ phone: '+19123456789',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true, Wootric: { eventType: 'random' } },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: { jobId: 16, userId: 'u1' },
+ message: {
+ type: 'track',
+ sentAt: '2022-01-20T13:39:21.033Z',
+ userId: 'dummyId1',
+ channel: 'web',
+ properties: { feedbackScore: 3, feedbackText: 'Too Slow!!!' },
+ context: {
+ os: { name: '', version: '' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.2.20',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ page: {
+ url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ path: '/Testing/App_for_LaunchDarkly/ourSdk.html',
+ title: 'Document',
+ search: '',
+ tab_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ referrer: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/',
+ initial_referrer: '$direct',
+ referring_domain: '127.0.0.1:7307',
+ initial_referring_domain: '',
+ },
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ screen: {
+ width: 1440,
+ height: 900,
+ density: 2,
+ innerWidth: 536,
+ innerHeight: 689,
+ },
+ traits: {
+ city: 'Mumbai',
+ name: 'Dummy User 1',
+ email: 'dummyUser1@gmail.com',
+ phone: '+19123456789',
+ title: 'SDE',
+ gender: 'Male',
+ company: 'Rudderstack',
+ createdAt: '2021-01-20T13:39:21.032Z',
+ },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.2.20' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36',
+ },
+ rudderId: '553b5522-c575-40a7-8072-9741c5f9a647',
+ messageId: '831f1fa5-de84-4f22-880a-4c3f23fc3f04',
+ anonymousId: 'bf412108-0357-4330-b119-7305e767823c',
+ integrations: { All: true },
+ originalTimestamp: '2022-01-20T13:39:21.032Z',
+ },
+ },
+ ],
+ destType: 'wootric',
+ },
+ method: 'POST',
+ },
+ },
+ output: {
+ response: {
+ status: 200,
+ body: {
+ output: [
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ email: 'dummyUser2@gmail.com',
+ phone_number: '+19123456777',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 1, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ phone_number: '+19123456777',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 2, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ email: 'dummyUser2@gmail.com',
+ last_surveyed: '1642685961',
+ external_created_at: '1611149961',
+ external_id: 'dummyId2',
+ 'properties[city]': 'Bangalore',
+ 'properties[name]': 'Dummy User 2',
+ 'properties[title]': 'SDE',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 3, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: [{ jobId: 5, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'email/phone number are missing. At least one parameter must be provided',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: [{ jobId: 6, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'email/phone number are missing. At least one parameter must be provided',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: { email: 'dummyuser1_01@gmail.com', last_surveyed: '1642685961' },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 7, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: { phone_number: '+19777777778', last_surveyed: '1642685961' },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 8, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'PUT',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ last_surveyed: '1642685961',
+ 'properties[city]': 'Udaipur',
+ 'properties[name]': 'Dummy User 1 New',
+ 'properties[title]': 'SDE-2',
+ 'properties[gender]': 'Male',
+ 'properties[company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 9, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462/responses',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ score: 7,
+ ip_address: '0.0.0.0',
+ origin_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ text: 'Simple, Easy to use, Reliable, Affordable Product',
+ created_at: '1611149961',
+ 'end_user[properties][city]': 'Mumbai',
+ 'end_user[properties][name]': 'Dummy User 1',
+ 'end_user[properties][title]': 'SDE',
+ 'end_user[properties][gender]': 'Male',
+ 'end_user[properties][company]': 'Rudderstack',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 10, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ metadata: [{ jobId: 11, userId: 'u1' }],
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ batched: false,
+ statusCode: 400,
+ error: 'No user found with userId : dummyId2',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: [{ jobId: 12, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'Invalid Score',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ batchedRequest: {
+ version: '1',
+ type: 'REST',
+ method: 'POST',
+ endpoint: 'https://api.wootric.com/v1/end_users/486438462/declines',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ Authorization:
+ 'Bearer 2fe581c1c72851e73d60f4191f720be93e5d3e8a6147e37c4e8e852b1a8f506c',
+ },
+ params: {},
+ body: {
+ JSON: {},
+ JSON_ARRAY: {},
+ XML: {},
+ FORM: {
+ origin_url: 'http://127.0.0.1:7307/Testing/App_for_LaunchDarkly/ourSdk.html',
+ },
+ },
+ files: {},
+ },
+ metadata: [{ jobId: 13, userId: 'u1' }],
+ batched: false,
+ statusCode: 200,
+ destination: {
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: [{ jobId: 14, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'No user found with userId : dummyId2',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ metadata: [{ jobId: 15, userId: 'u1' }],
+ batched: false,
+ statusCode: 400,
+ error: 'Event Type not supported',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ {
+ metadata: [{ jobId: 16, userId: 'u1' }],
+ destination: {
+ Config: {
+ username: 'wootricfakeuser@example.com',
+ password: 'password@123',
+ accountToken: 'NPS-dummyToken',
+ },
+ ID: '2D7TqLto9tnkBuR1ciMrbiA4cbG',
+ },
+ batched: false,
+ statusCode: 400,
+ error: 'Event Type is missing from Integration object',
+ statTags: {
+ destType: 'WOOTRIC',
+ feature: 'router',
+ implementation: 'native',
+ module: 'destination',
+ errorCategory: 'dataValidation',
+ errorType: 'instrumentation',
+ },
+ },
+ ],
+ },
+ },
+ },
+ },
+];
diff --git a/test/integrations/destinations/yahoo_dsp/router/data.ts b/test/integrations/destinations/yahoo_dsp/router/data.ts
index 59c71b300cb..61b1b728a53 100644
--- a/test/integrations/destinations/yahoo_dsp/router/data.ts
+++ b/test/integrations/destinations/yahoo_dsp/router/data.ts
@@ -23,9 +23,7 @@ export const data = [
},
ID: 'iwehr83843',
},
- metadata: {
- jobId: 1,
- },
+ metadata: { jobId: 1, userId: 'u1' },
message: {
userId: 'user 1',
type: 'audiencelist',
@@ -75,12 +73,7 @@ export const data = [
},
enablePartialFailure: true,
},
- context: {
- ip: '14.5.67.21',
- library: {
- name: 'http',
- },
- },
+ context: { ip: '14.5.67.21', library: { name: 'http' } },
timestamp: '2020-02-02T00:23:09.544Z',
},
},
@@ -123,11 +116,7 @@ export const data = [
},
files: {},
},
- metadata: [
- {
- jobId: 1,
- },
- ],
+ metadata: [{ jobId: 1, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
diff --git a/test/integrations/destinations/zendesk/router/data.ts b/test/integrations/destinations/zendesk/router/data.ts
index d99ca6df039..4e7aacd1d1f 100644
--- a/test/integrations/destinations/zendesk/router/data.ts
+++ b/test/integrations/destinations/zendesk/router/data.ts
@@ -30,9 +30,7 @@ export const data = [
Name: 'zendesk',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: '297b0750-934b-4411-b66c-9b418cdbc0c9',
channel: 'web',
@@ -44,28 +42,15 @@ export const data = [
version: '1.1.0-beta.2',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.0-beta.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.0-beta.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- email: 'example124@email.com',
- name: 'abcd124',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { email: 'example124@email.com', name: 'abcd124' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '0bab70e8-bf2f-449a-a19b-ca6e3bfed9b7',
originalTimestamp: '2020-03-23T18:27:28.98Z',
receivedAt: '2020-03-23T23:57:29.022+05:30',
@@ -108,9 +93,7 @@ export const data = [
email: 'example124@email.com',
name: 'abcd124',
external_id: 'abcd-124',
- user_fields: {
- id: 'abcd-124',
- },
+ user_fields: { id: 'abcd-124' },
verified: true,
},
},
@@ -122,11 +105,7 @@ export const data = [
userId: '297b0750-934b-4411-b66c-9b418cdbc0c9',
},
],
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -186,9 +165,7 @@ export const data = [
Name: 'zendesk',
Transformations: [],
},
- metadata: {
- jobId: 2,
- },
+ metadata: { jobId: 2, userId: 'u1' },
message: {
anonymousId: '297b0750-934b-4411-b66c-9b418cdbc0c9',
channel: 'web',
@@ -200,29 +177,16 @@ export const data = [
version: '1.1.0-beta.2',
},
ip: '0.0.0.0',
- library: {
- name: 'RudderLabs JavaScript SDK',
- version: '1.1.0-beta.2',
- },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.0-beta.2' },
locale: 'en-GB',
- os: {
- name: '',
- version: '',
- },
- screen: {
- density: 2,
- },
- traits: {
- email: 'example124@email.com',
- name: 'abcd124',
- },
+ os: { name: '', version: '' },
+ screen: { density: 2 },
+ traits: { email: 'example124@email.com', name: 'abcd124' },
userAgent:
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36',
},
groupId: 'group-124',
- integrations: {
- All: true,
- },
+ integrations: { All: true },
messageId: '2d54ba80-ce5f-4bcb-b1d7-7587e7a865fc',
originalTimestamp: '2020-03-23T18:27:28.983Z',
receivedAt: '2020-03-23T23:57:29.022+05:30',
@@ -277,11 +241,7 @@ export const data = [
files: {},
userId: '297b0750-934b-4411-b66c-9b418cdbc0c9',
},
- metadata: [
- {
- jobId: 2,
- },
- ],
+ metadata: [{ jobId: 2, userId: 'u1' }],
batched: false,
statusCode: 200,
destination: {
@@ -340,9 +300,7 @@ export const data = [
Name: 'zendesk',
Transformations: [],
},
- metadata: {
- jobId: 3,
- },
+ metadata: { jobId: 3, userId: 'u1' },
message: {
anonymousId: '223b5f40-9543-4456-a7aa-945c43048185',
channel: 'web',
@@ -393,11 +351,7 @@ export const data = [
module: 'destination',
},
statusCode: 400,
- metadata: [
- {
- jobId: 3,
- },
- ],
+ metadata: [{ jobId: 3, userId: 'u1' }],
batched: false,
destination: {
Config: {
diff --git a/test/integrations/testTypes.ts b/test/integrations/testTypes.ts
index 51667e8044b..a46277d5523 100644
--- a/test/integrations/testTypes.ts
+++ b/test/integrations/testTypes.ts
@@ -1,5 +1,13 @@
import { AxiosResponse } from 'axios';
import MockAdapter from 'axios-mock-adapter';
+import {
+ DeliveryV1Response,
+ ProcessorTransformationRequest,
+ ProcessorTransformationResponse,
+ ProxyV1Request,
+ RouterTransformationRequest,
+ RouterTransformationResponse,
+} from '../../src/types';
export interface requestType {
method: string;
@@ -31,6 +39,9 @@ export interface mockType {
export interface TestCaseData {
name: string;
description: string;
+ scenario?: string;
+ successCriteria?: string;
+ comment?: string;
feature: string;
module: string;
version?: string;
@@ -44,3 +55,76 @@ export type MockHttpCallsData = {
httpReq: Record;
httpRes: Partial;
};
+
+export type ProcessorTestData = {
+ id: string;
+ name: string;
+ description: string;
+ scenario: string;
+ successCriteria: string;
+ comment?: string;
+ feature: string;
+ module: string;
+ version: string;
+ input: {
+ request: {
+ body: ProcessorTransformationRequest[];
+ };
+ };
+ output: {
+ response: {
+ status: number;
+ body: ProcessorTransformationResponse[];
+ };
+ };
+};
+export type RouterTestData = {
+ id: string;
+ name: string;
+ description: string;
+ comment?: string;
+ scenario: string;
+ successCriteria: string;
+ feature: string;
+ module: string;
+ version: string;
+ input: {
+ request: {
+ body: RouterTransformationRequest;
+ };
+ };
+ output: {
+ response: {
+ status: number;
+ body: {
+ output: RouterTransformationResponse[];
+ };
+ };
+ };
+};
+
+export type ProxyV1TestData = {
+ id: string;
+ name: string;
+ description: string;
+ comment?: string;
+ scenario: string;
+ successCriteria: string;
+ feature: string;
+ module: string;
+ version: string;
+ input: {
+ request: {
+ body: ProxyV1Request;
+ method: string;
+ };
+ };
+ output: {
+ response: {
+ status: number;
+ body: {
+ output: DeliveryV1Response;
+ };
+ };
+ };
+};
diff --git a/test/integrations/testUtils.ts b/test/integrations/testUtils.ts
index f5be8107ed4..2abe4c6d9a7 100644
--- a/test/integrations/testUtils.ts
+++ b/test/integrations/testUtils.ts
@@ -1,10 +1,33 @@
+import { z } from 'zod';
import { globSync } from 'glob';
import { join } from 'path';
import { MockHttpCallsData, TestCaseData } from './testTypes';
import MockAdapter from 'axios-mock-adapter';
import isMatch from 'lodash/isMatch';
import { OptionValues } from 'commander';
+import { removeUndefinedAndNullValues } from '@rudderstack/integrations-lib';
+import {
+ Destination,
+ Metadata,
+ ProxyMetdata,
+ ProxyV0Request,
+ ProxyV1Request,
+} from '../../src/types';
+import {
+ DeliveryV0ResponseSchema,
+ DeliveryV0ResponseSchemaForOauth,
+ DeliveryV1ResponseSchema,
+ DeliveryV1ResponseSchemaForOauth,
+ ProcessorTransformationResponseListSchema,
+ ProcessorTransformationResponseSchema,
+ ProxyV0RequestSchema,
+ ProxyV1RequestSchema,
+ RouterTransformationResponseListSchema,
+ RouterTransformationResponseSchema,
+} from '../../src/types/zodTypes';
+const generateAlphanumericId = (size = 36) =>
+ [...Array(size)].map(() => ((Math.random() * size) | 0).toString(size)).join('');
export const getTestDataFilePaths = (dirPath: string, opts: OptionValues): string[] => {
const globPattern = join(dirPath, '**', 'data.ts');
let testFilePaths = globSync(globPattern);
@@ -29,13 +52,17 @@ export const getAllTestMockDataFilePaths = (dirPath: string, destination: string
const globPattern = join(dirPath, '**', 'network.ts');
let testFilePaths = globSync(globPattern);
if (destination) {
+ const commonTestFilePaths = testFilePaths.filter((testFile) =>
+ testFile.includes('test/integrations/common'),
+ );
testFilePaths = testFilePaths.filter((testFile) => testFile.includes(destination));
+ testFilePaths = [...commonTestFilePaths, ...testFilePaths];
}
return testFilePaths;
};
export const addMock = (mock: MockAdapter, axiosMock: MockHttpCallsData) => {
- const { url, method, data: reqData, ...opts } = axiosMock.httpReq;
+ const { url, method, data: reqData, params, ...opts } = axiosMock.httpReq;
const { data, headers, status } = axiosMock.httpRes;
const headersAsymMatch = {
@@ -46,8 +73,10 @@ export const addMock = (mock: MockAdapter, axiosMock: MockHttpCallsData) => {
switch (method.toLowerCase()) {
case 'get':
+ // We are accepting parameters exclusively for mocking purposes and do not require a request body,
+ // particularly for GET requests where it is typically unnecessary
// @ts-ignore
- mock.onGet(url, reqData, headersAsymMatch).reply(status, data, headers);
+ mock.onGet(url, { params }, headersAsymMatch).reply(status, data, headers);
break;
case 'delete':
// @ts-ignore
@@ -69,8 +98,438 @@ export const addMock = (mock: MockAdapter, axiosMock: MockHttpCallsData) => {
break;
}
};
-export const overrideDestination = (destination, overrideConfigValues) => {
+export const overrideDestination = (destination: Destination, overrideConfigValues) => {
return Object.assign({}, destination, {
Config: { ...destination.Config, ...overrideConfigValues },
});
};
+
+export const generateIndentifyPayload: any = (parametersOverride: any) => {
+ const payload = {
+ type: 'identify',
+ sentAt: parametersOverride.sentAt || '2021-01-03T17:02:53.195Z',
+ userId: parametersOverride.userId || 'default-userId',
+ channel: 'web',
+ context: removeUndefinedAndNullValues({
+ externalId: parametersOverride.externalId,
+ os: { name: '', version: '1.12.3' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: parametersOverride.context.traits,
+ locale: 'en-US',
+ device: { token: 'token', id: 'id', type: 'ios' },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ }),
+ traits: parametersOverride.traits,
+ integrations: parametersOverride.integrations,
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ messageId: parametersOverride.messageId || generateAlphanumericId(36),
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ originalTimestamp: parametersOverride.originalTimestamp || '2021-01-03T17:02:53.193Z',
+ };
+
+ return removeUndefinedAndNullValues(payload);
+};
+
+export const generateSimplifiedIdentifyPayload: any = (parametersOverride: any) => {
+ return removeUndefinedAndNullValues({
+ type: 'identify',
+ sentAt: parametersOverride.sentAt || '2021-01-03T17:02:53.195Z',
+ userId: parametersOverride.userId || 'default-userId',
+ traits: parametersOverride.traits,
+ integrations: parametersOverride.integrations,
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ messageId: parametersOverride.messageId || generateAlphanumericId(36),
+ context: {
+ externalId: parametersOverride.context.externalId,
+ traits: parametersOverride.context.traits,
+ },
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ originalTimestamp: parametersOverride.originalTimestamp || '2021-01-03T17:02:53.193Z',
+ });
+};
+
+export const generateTrackPayload: any = (parametersOverride: any) => {
+ const payload = {
+ type: 'track',
+ sentAt: parametersOverride.sentAt || '2021-01-03T17:02:53.195Z',
+ userId: parametersOverride.userId || 'default-user-id',
+ channel: 'web',
+ context: removeUndefinedAndNullValues({
+ externalId: parametersOverride.externalId,
+ os: { name: '', version: '1.12.3' },
+ app: {
+ name: 'RudderLabs JavaScript SDK',
+ build: '1.0.0',
+ version: '1.1.11',
+ namespace: 'com.rudderlabs.javascript',
+ },
+ traits: parametersOverride.context.traits,
+ locale: 'en-US',
+ device: { token: 'token', id: 'id', type: 'ios' },
+ screen: { density: 2 },
+ library: { name: 'RudderLabs JavaScript SDK', version: '1.1.11' },
+ campaign: {},
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:84.0) Gecko/20100101 Firefox/84.0',
+ }),
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ messageId: parametersOverride.messageId || generateAlphanumericId(36),
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ originalTimestamp: parametersOverride.originalTimestamp || '2021-01-03T17:02:53.193Z',
+ timestamp: parametersOverride.timestamp,
+ event: parametersOverride.event || 'test-event',
+ integrations: parametersOverride.integrations,
+ properties: parametersOverride.properties,
+ };
+ return removeUndefinedAndNullValues(payload);
+};
+
+export const generateSimplifiedTrackPayload: any = (parametersOverride: any) => {
+ return removeUndefinedAndNullValues({
+ type: 'track',
+ sentAt: parametersOverride.sentAt || '2021-01-03T17:02:53.195Z',
+ userId: parametersOverride.userId || 'default-user-id',
+ event: parametersOverride.event || 'test-event',
+ properties: parametersOverride.properties,
+ integrations: parametersOverride.integrations,
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ messageId: parametersOverride.messageId || generateAlphanumericId(36),
+ context: removeUndefinedAndNullValues({
+ externalId: parametersOverride.context.externalId,
+ traits: parametersOverride.context.traits,
+ }),
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ originalTimestamp: parametersOverride.originalTimestamp || '2021-01-03T17:02:53.193Z',
+ });
+};
+
+export const generatePageOrScreenPayload: any = (parametersOverride: any, eventType: string) => {
+ const payload = {
+ channel: 'web',
+ userId: parametersOverride.userId || 'default-userId',
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ originalTimestamp: parametersOverride.originalTimestamp || '2022-04-26T05:17:09Z',
+ timestamp: parametersOverride.timestamp,
+ context: removeUndefinedAndNullValues({
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ device: {
+ adTrackingEnabled: 'false',
+ advertisingId: 'T0T0T072-5e28-45a1-9eda-ce22a3e36d1a',
+ id: '3f034872-5e28-45a1-9eda-ce22a3e36d1a',
+ manufacturer: 'Google',
+ model: 'AOSP on IA Emulator',
+ name: 'generic_x86_arm',
+ type: 'ios',
+ attTrackingStatus: 3,
+ },
+ ip: '0.0.0.0',
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ locale: 'en-US',
+ os: {
+ name: 'iOS',
+ version: '14.4.1',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: parametersOverride.context.traits,
+ externalId: parametersOverride.externalId,
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
+ }),
+ event: parametersOverride.event,
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ properties: parametersOverride.properties,
+ type: eventType || 'page',
+ integrations: parametersOverride.integrations,
+ sentAt: '2022-04-20T15:20:57Z',
+ };
+
+ return removeUndefinedAndNullValues(payload);
+};
+
+export const generateSimplifiedPageOrScreenPayload: any = (
+ parametersOverride: any,
+ eventType: string,
+) => {
+ return removeUndefinedAndNullValues({
+ channel: 'web',
+ userId: parametersOverride.userId || 'default-userId',
+ type: eventType || 'page',
+ event: parametersOverride.event,
+ properties: parametersOverride.properties,
+ integrations: parametersOverride.integrations,
+ rudderId: parametersOverride.rudderId || generateAlphanumericId(36),
+ context: removeUndefinedAndNullValues({
+ externalId: parametersOverride.externalId,
+ traits: parametersOverride.context.traits,
+ }),
+ timestamp: parametersOverride.timestamp,
+ anonymousId: parametersOverride.anonymousId || 'default-anonymousId',
+ originalTimestamp: parametersOverride.originalTimestamp || '2022-04-26T05:17:09Z',
+ });
+};
+
+export const generateGroupPayload: any = (parametersOverride: any) => {
+ const payload = {
+ channel: 'web',
+ context: removeUndefinedAndNullValues({
+ app: {
+ build: '1.0.0',
+ name: 'RudderLabs JavaScript SDK',
+ namespace: 'com.rudderlabs.javascript',
+ version: '1.0.0',
+ },
+ library: {
+ name: 'RudderLabs JavaScript SDK',
+ version: '1.0.0',
+ },
+ userAgent:
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',
+ locale: 'en-US',
+ ip: '0.0.0.0',
+ os: {
+ name: '',
+ version: '',
+ },
+ screen: {
+ density: 2,
+ },
+ traits: parametersOverride.context.traits,
+ externalId: parametersOverride.externalId,
+ }),
+ messageId: parametersOverride.messageId || generateAlphanumericId(36),
+ session_id: parametersOverride.session_id || generateAlphanumericId(36),
+ originalTimestamp: parametersOverride.originalTimestamp || '2019-10-14T09:03:17.562Z',
+ timestamp: parametersOverride.timestamp,
+ anonymousId: parametersOverride.anonymousId || generateAlphanumericId(36),
+ userId: parametersOverride.userId || 'default-user-id',
+ type: 'group',
+ groupId: parametersOverride.groupId,
+ traits: parametersOverride.traits,
+ integrations: parametersOverride.integrations,
+ sentAt: parametersOverride.sentAt || '2019-10-14T09:03:22.563Z',
+ };
+ return removeUndefinedAndNullValues(payload);
+};
+
+export const generateSimplifiedGroupPayload: any = (parametersOverride: any) => {
+ return removeUndefinedAndNullValues({
+ channel: 'web',
+ userId: parametersOverride.userId || 'default-userId',
+ type: 'group',
+ groupId: parametersOverride.groupId,
+ traits: parametersOverride.traits,
+ integrations: parametersOverride.integrations,
+ context: removeUndefinedAndNullValues({
+ externalId: parametersOverride.externalId,
+ traits: parametersOverride.context.traits,
+ }),
+ timestamp: parametersOverride.timestamp,
+ anonymousId: parametersOverride.anonymousId || generateAlphanumericId(36),
+ originalTimestamp: parametersOverride.originalTimestamp || '2019-10-14T09:03:17.562Z',
+ });
+};
+
+export const transformResultBuilder: any = (matchData) => {
+ return removeUndefinedAndNullValues({
+ version: '1',
+ type: 'REST',
+ userId: matchData.userId,
+ method: matchData.method || 'POST',
+ endpoint: matchData.endpoint || '',
+ headers: matchData.headers || {},
+ params: matchData.params || {},
+ body: {
+ JSON: matchData.JSON || {},
+ JSON_ARRAY: matchData.JSON_ARRAY || {},
+ XML: matchData.XML || {},
+ FORM: matchData.FORM || {},
+ },
+ files: matchData.files || {},
+ });
+};
+
+export const compareObjects = (obj1, obj2, logPrefix = '', differences: string[] = []) => {
+ for (const key in obj1) {
+ if (obj1.hasOwnProperty(key)) {
+ const fullKey = logPrefix ? `${logPrefix}.${key}` : key;
+
+ if (typeof obj1[key] === 'object' && typeof obj2[key] === 'object') {
+ compareObjects(obj1[key], obj2[key], fullKey, differences);
+ } else if (obj1[key] !== obj2[key]) {
+ differences.push(fullKey);
+ }
+ }
+ }
+
+ // Check for keys in obj2 that are not present in obj1
+ for (const key in obj2) {
+ if (obj2.hasOwnProperty(key) && !obj1.hasOwnProperty(key)) {
+ const fullKey = logPrefix ? `${logPrefix}.${key}` : key;
+ differences.push(fullKey);
+ }
+ }
+
+ return differences;
+};
+
+export const generateProxyV0Payload = (
+ payloadParameters: any,
+ metadataInput?: ProxyMetdata,
+ destinationConfig?: any,
+): ProxyV0Request => {
+ let metadata: ProxyMetdata = {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ };
+ if (metadataInput) {
+ metadata = metadataInput;
+ }
+ const payload = {
+ version: 'v0',
+ type: 'REST',
+ userId: payloadParameters.userId || 'default-userId',
+ method: payloadParameters.method || 'POST',
+ endpoint: payloadParameters.endpoint || '',
+ headers: payloadParameters.headers || {},
+ params: payloadParameters.params || {},
+ body: {
+ JSON: payloadParameters.JSON || {},
+ JSON_ARRAY: payloadParameters.JSON_ARRAY || {},
+ XML: payloadParameters.XML || {},
+ FORM: payloadParameters.FORM || {},
+ },
+ files: payloadParameters.files || {},
+ metadata,
+ destinationConfig: destinationConfig || {},
+ };
+ return removeUndefinedAndNullValues(payload) as ProxyV0Request;
+};
+
+export const generateProxyV1Payload = (
+ payloadParameters: any,
+ metadataInput?: ProxyMetdata[],
+ destinationConfig?: any,
+): ProxyV1Request => {
+ let metadata: ProxyMetdata[] = [
+ {
+ jobId: 1,
+ attemptNum: 1,
+ userId: 'default-userId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ sourceId: 'default-sourceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ },
+ ];
+ if (metadataInput) {
+ metadata = metadataInput;
+ }
+ const payload = {
+ version: 'v1',
+ type: 'REST',
+ userId: payloadParameters.userId || 'default-userId',
+ method: payloadParameters.method || 'POST',
+ endpoint: payloadParameters.endpoint || '',
+ headers: payloadParameters.headers || {},
+ params: payloadParameters.params || {},
+ body: {
+ JSON: payloadParameters.JSON || {},
+ JSON_ARRAY: payloadParameters.JSON_ARRAY || {},
+ XML: payloadParameters.XML || {},
+ FORM: payloadParameters.FORM || {},
+ },
+ files: payloadParameters.files || {},
+ metadata,
+ destinationConfig: destinationConfig || {},
+ };
+ return removeUndefinedAndNullValues(payload) as ProxyV1Request;
+};
+
+// -----------------------------
+// Zod validations
+
+export const validateTestWithZOD = (testPayload: TestCaseData, response: any) => {
+ // Validate the resquest payload
+ switch (testPayload.feature) {
+ case 'router':
+ RouterTransformationResponseListSchema.parse(response.body.output);
+ break;
+ case 'batch':
+ RouterTransformationResponseListSchema.parse(response.body);
+ break;
+ // case 'user_deletion':
+ // DeletionSchema.parse(responseBody);
+ // break;
+ case 'processor':
+ ProcessorTransformationResponseListSchema.parse(response.body);
+ break;
+ case 'dataDelivery':
+ if (testPayload.version === 'v0') {
+ ProxyV0RequestSchema.parse(testPayload.input.request.body);
+ if (testPayload.scenario === 'Oauth') {
+ DeliveryV0ResponseSchemaForOauth.parse(response.body.output);
+ } else {
+ DeliveryV0ResponseSchema.parse(response.body.output);
+ }
+ } else if (testPayload.version === 'v1') {
+ ProxyV1RequestSchema.parse(testPayload.input.request.body);
+ if (testPayload.scenario === 'Oauth') {
+ DeliveryV1ResponseSchemaForOauth.parse(response.body.output);
+ } else {
+ DeliveryV1ResponseSchema.parse(response.body.output);
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return true;
+};
+
+// -----------------------------
+// Helper functions
+
+export const generateMetadata = (jobId: number): any => {
+ return {
+ jobId,
+ attemptNum: 1,
+ userId: 'default-userId',
+ sourceId: 'default-sourceId',
+ destinationId: 'default-destinationId',
+ workspaceId: 'default-workspaceId',
+ secret: {
+ accessToken: 'default-accessToken',
+ },
+ dontBatch: false,
+ };
+};
diff --git a/test/testHelper.js b/test/testHelper.js
index 5fe97fed674..f0297c05743 100644
--- a/test/testHelper.js
+++ b/test/testHelper.js
@@ -15,11 +15,71 @@ const setResponsesForMockAxiosAdapter = ({url, method, data, options}, {response
if (data) {
reqObj.data = data
}
- responses.push(`{httpReq: ${JSON.stringify(reqObj)},httpRes: ${JSON.stringify(response)}},`)
+ responses.push(`{httpReq: ${JSON.stringify(reqObj)},httpRes: ${JSON.stringify(response)}},`)
}
}
+
+const assertRouterOutput = (output, input) => {
+ if (!Array.isArray(output) || !Array.isArray(input)) {
+ return
+ }
+
+ const returnedJobids = {};
+ output.forEach((outEvent) => {
+ //Assert that metadata is present and is an array
+ const metadata = outEvent.metadata;
+ expect(Array.isArray(metadata)).toEqual(true);
+
+ //Assert that statusCode is present and is a number between 200 and 600
+ const statusCode = outEvent.statusCode;
+ expect(statusCode).toBeDefined();
+ expect(typeof statusCode === 'number').toEqual(true);
+ const validStatusCode = statusCode >= 200 && statusCode < 600;
+ expect(validStatusCode).toEqual(true);
+
+ //Assert that every job_id in the input is present in the output one and only one time.
+ metadata.forEach((meta) => {
+ const jobId = meta.jobId;
+ expect(returnedJobids[jobId]).toBeUndefined();
+ returnedJobids[jobId] = true;
+ });
+ });
+
+ const inputJobids = {};
+ input.forEach((input) => {
+ const jobId = input.metadata.jobId;
+ inputJobids[jobId] = true;
+ });
+
+ expect(returnedJobids).toEqual(inputJobids);
+
+ let userIdJobIdMap = {};
+ output.forEach((outEvent) => {
+ //Events with statusCode 400-499 are skipped. They are not sent to the destination.
+ if (outEvent.statusCode < 400 || outEvent.statusCode > 499) {
+ const metadata = outEvent.metadata;
+ metadata.forEach((meta) => {
+ const jobId = meta.jobId;
+ const userId = meta.userId;
+ let arr = userIdJobIdMap[userId] || [];
+ arr.push(jobId);
+ userIdJobIdMap[userId] = arr;
+ });
+ }
+ });
+
+ //The jobids for a user should be in order. If not, there is an issue.
+ Object.keys(userIdJobIdMap).forEach((userId) => {
+ const jobIds = userIdJobIdMap[userId];
+ for (let i = 0; i < jobIds.length - 1; i++) {
+ expect(jobIds[i] < jobIds[i + 1]).toEqual(true);
+ }
+ });
+};
+
module.exports = {
getFuncTestData,
responses,
- setResponsesForMockAxiosAdapter
+ setResponsesForMockAxiosAdapter,
+ assertRouterOutput
};
diff --git a/test/test_reporter/reporter.ts b/test/test_reporter/reporter.ts
new file mode 100644
index 00000000000..5741b1cdf01
--- /dev/null
+++ b/test/test_reporter/reporter.ts
@@ -0,0 +1,133 @@
+import fs from 'fs';
+import { compareObjects } from '../integrations/testUtils';
+
+// Step 1: Generate the template HTML
+const generateHTMLTemplate = () => `
+
+
+
+
+
+ Test Report
+
+
+
+
+
+ Test Report
+
+
+ Integration Name |
+ Id |
+ Description |
+ Success Criteria |
+ Scenario |
+ Module |
+ Feature |
+ API Version |
+ Test Input |
+ Test Output |
+ Expected Output |
+ Diff Keys |
+ Test Status |
+
+
+
+
+
+
+`;
+
+// Step 2: Iterate through each test data element and add it to the HTML template
+const generateHTMLContent = (testData, expectedData, testStatus) => {
+ let htmlContent = '';
+ let diffKeys: string[] = [];
+ diffKeys = compareObjects(testData.output.response.body, expectedData);
+ htmlContent += `
+
+ ${testData.name} |
+ ${testData.id} |
+ ${testData.description} |
+ ${testData.successCriteria} |
+ ${testData.scenario} |
+ ${testData.module} |
+ ${testData.feature} |
+ ${testData.version} |
+ ${JSON.stringify(testData.input.request.body)} |
+ ${JSON.stringify(testData.output.response.body)} |
+ ${JSON.stringify(expectedData)} |
+ ${JSON.stringify(diffKeys)} |
+ ${testStatus} |
+
+
+ `;
+
+ return htmlContent;
+};
+
+// Step 3: Write the HTML report to a file
+export const generateTestReport = (testData, output, result) => {
+ fs.readFile('test_reports/test-report.html', 'utf8', (err, htmlTemplate) => {
+ if (err) {
+ console.error(err);
+ return;
+ }
+
+ const htmlContent = generateHTMLContent(testData, output, result);
+ const finalHTML = htmlTemplate.replace('', htmlContent);
+ fs.writeFileSync('test_reports/test-report.html', finalHTML);
+ });
+};
+
+export const initaliseReport = () => {
+ const htmlTemplate = generateHTMLTemplate();
+ if (!fs.existsSync('test_reports')) {
+ fs.mkdirSync('test_reports');
+ }
+ fs.writeFileSync('test_reports/test-report.html', htmlTemplate);
+ console.log('Report initialised');
+};
diff --git a/tsconfig.json b/tsconfig.json
index 3d91523d78d..926831b6123 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -13,7 +13,7 @@
/* Language and Environment */
"target": "ES2021" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
"lib": [
- "es2019"
+ "es2019",
] /* Specify a set of bundled library declaration files that describe the target runtime environment. */,
// "jsx": "preserve", /* Specify what JSX code is generated. */
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
@@ -100,8 +100,8 @@
/* Completeness */
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
- "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */,
},
- "exclude": ["./src/**/*.test.js", "./src/**/*.test.ts"],
- "include": ["./src", "./src/**/*.json"]
+ "exclude": ["./src/**/*.test.js", "./src/**/*.test.ts", "./test"],
+ "include": ["./src", "./src/**/*.json"],
}