From e73e999ac7c53c35d074a2db4695b2c127d0b043 Mon Sep 17 00:00:00 2001 From: Ujjwal Abhishek <63387036+ujjwal-ab@users.noreply.github.com> Date: Tue, 12 Sep 2023 17:04:34 +0530 Subject: [PATCH] chore: migrate test cases to new component test suit (#2579) * migrate test cases to new component test suit * chore: migrate lambda tests * chore: migrate kochava tests * chore: migrate lambda tests * chore: migrate leanplum router tests * chore: migrate lemnisk tests * chore: migrate lytics tests * chore: migrate mailjet tests * chore: migrate mailmodo tests * chore: migrate marketo_static_list tests * chore: migrate moengage tests * chore: migrate moetate tests * chore: migrate ometria tests * chore: migrate one_signal tests * chore: migrate pagerduty tests * chore: migrate pinterest_tag tests * chore: migrate pardot tests --- .../destinations/kochava/processor/data.ts | 1404 + .../destinations/lambda/processor/data.ts | 498 + .../destinations/lambda/router/data.ts | 38788 ++++++++++++++++ .../destinations/leanplum/processor/data.ts | 1708 + .../destinations/leanplum/router/data.ts | 370 + .../destinations/lemnisk/processor/data.ts | 1088 + .../destinations/lemnisk/router/data.ts | 664 + .../destinations/lytics/processor/data.ts | 1360 + .../destinations/lytics/router/data.ts | 351 + .../destinations/mailjet/processor/data.ts | 229 + .../destinations/mailjet/router/data.ts | 106 + .../destinations/mailmodo/processor/data.ts | 648 + .../destinations/mailmodo/router/data.ts | 294 + .../marketo_static_list/processor/data.ts | 1194 + .../marketo_static_list/router/data.ts | 1416 + .../destinations/moengage/processor/data.ts | 2780 ++ .../destinations/moengage/router/data.ts | 480 + .../destinations/monetate/processor/data.ts | 2796 ++ .../destinations/monetate/router/data.ts | 264 + .../destinations/ometria/processor/data.ts | 1078 + .../destinations/ometria/router/data.ts | 336 + .../destinations/one_signal/processor/data.ts | 1545 + .../destinations/one_signal/router/data.ts | 286 + .../destinations/pagerduty/processor/data.ts | 782 + .../destinations/pagerduty/router/data.ts | 309 + .../destinations/pardot/router/data.ts | 1017 + .../personalize/processor/data.ts | 4188 ++ .../pinterest_tag/processor/data.ts | 3435 ++ .../destinations/pinterest_tag/router/data.ts | 2153 + .../destinations/pinterest_tag/step/data.ts | 3358 ++ 30 files changed, 74925 insertions(+) create mode 100644 test/integrations/destinations/kochava/processor/data.ts create mode 100644 test/integrations/destinations/lambda/processor/data.ts create mode 100644 test/integrations/destinations/lambda/router/data.ts create mode 100644 test/integrations/destinations/leanplum/processor/data.ts create mode 100644 test/integrations/destinations/leanplum/router/data.ts create mode 100644 test/integrations/destinations/lemnisk/processor/data.ts create mode 100644 test/integrations/destinations/lemnisk/router/data.ts create mode 100644 test/integrations/destinations/lytics/processor/data.ts create mode 100644 test/integrations/destinations/lytics/router/data.ts create mode 100644 test/integrations/destinations/mailjet/processor/data.ts create mode 100644 test/integrations/destinations/mailjet/router/data.ts create mode 100644 test/integrations/destinations/mailmodo/processor/data.ts create mode 100644 test/integrations/destinations/mailmodo/router/data.ts create mode 100644 test/integrations/destinations/marketo_static_list/processor/data.ts create mode 100644 test/integrations/destinations/marketo_static_list/router/data.ts create mode 100644 test/integrations/destinations/moengage/processor/data.ts create mode 100644 test/integrations/destinations/moengage/router/data.ts create mode 100644 test/integrations/destinations/monetate/processor/data.ts create mode 100644 test/integrations/destinations/monetate/router/data.ts create mode 100644 test/integrations/destinations/ometria/processor/data.ts create mode 100644 test/integrations/destinations/ometria/router/data.ts create mode 100644 test/integrations/destinations/one_signal/processor/data.ts create mode 100644 test/integrations/destinations/one_signal/router/data.ts create mode 100644 test/integrations/destinations/pagerduty/processor/data.ts create mode 100644 test/integrations/destinations/pagerduty/router/data.ts create mode 100644 test/integrations/destinations/pardot/router/data.ts create mode 100644 test/integrations/destinations/personalize/processor/data.ts create mode 100644 test/integrations/destinations/pinterest_tag/processor/data.ts create mode 100644 test/integrations/destinations/pinterest_tag/router/data.ts create mode 100644 test/integrations/destinations/pinterest_tag/step/data.ts diff --git a/test/integrations/destinations/kochava/processor/data.ts b/test/integrations/destinations/kochava/processor/data.ts new file mode 100644 index 0000000000..d17e9795ff --- /dev/null +++ b/test/integrations/destinations/kochava/processor/data.ts @@ -0,0 +1,1404 @@ +export const data = [ + { + name: 'kochava', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + message: { + anonymousId: 'sampath', + channel: 'web', + context: { + app: { + build: '1.0.0', + name: 'RudderLabs JavaScript SDK', + namespace: 'com.rudderlabs.javascript', + version: '1.0.0', + }, + ip: '1.1.1.1', + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + locale: 'en-US', + os: { name: 'macOS', version: '15.9' }, + 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 }, + messageId: 'ea5cfab2-3961-4d8a-8187-3d1858c90a9f', + originalTimestamp: '2020-01-17T04:53:51.185Z', + properties: { name: 'sampath' }, + receivedAt: '2020-01-17T10:23:52.688+05:30', + request_ip: '0.0.0.0', + sentAt: '2020-01-17T04:53:52.667Z', + timestamp: '2020-01-17T10:23:51.206+05:30', + type: 'track', + userId: 'sampath', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: 'sampath', + data: { + app_tracking_transparency: { att: false }, + currency: 'USD', + device_ids: { idfa: '', idfv: '', adid: '', android_id: '' }, + device_ver: '', + usertime: 1579236831206, + origination_ip: '1.1.1.1', + device_ua: + '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', + app_name: 'RudderLabs JavaScript SDK', + app_version: '1.0.0', + app_short_string: '1.0.0', + os_version: '15.9', + screen_dpi: 2, + locale: 'en-US', + event_name: 'Add to Cart', + event_data: { name: 'sampath' }, + }, + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: 'sampath', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: '1.1.1.1', + os: { name: '', version: '' }, + screen: { density: 2 }, + }, + 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: { + destinationId: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + }, + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Bad event. Original error: message type "identify" not supported for "kochava"', + metadata: { + destinationId: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + }, + statTags: { + destType: 'KOCHAVA', + errorCategory: 'dataValidation', + destinationId: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'cdkV1', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: '1.1.1.1', + os: { name: '', version: '' }, + screen: { density: 2 }, + }, + type: 'screen', + name: 'Home Screen', + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '00000000000000000000000000', + data: { + app_tracking_transparency: { att: false }, + currency: 'USD', + device_ids: { idfa: '', idfv: '', adid: '', android_id: '' }, + device_ver: '', + os_version: '', + usertime: 1571043797562, + device_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', + app_name: 'RudderLabs JavaScript SDK', + app_version: '1.0.0', + app_short_string: '1.0.0', + screen_dpi: 2, + locale: 'en-US', + event_name: 'screen view', + event_data: {}, + origination_ip: '1.1.1.1', + }, + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: '00000000000000000000000000', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36', + locale: 'en-US', + ip: '1.1.1.1', + os: { name: '', version: '' }, + screen: { density: 2 }, + }, + type: 'screen', + properties: { name: 'Home Screen' }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '00000000000000000000000000', + data: { + app_tracking_transparency: { att: false }, + currency: 'USD', + device_ids: { idfa: '', idfv: '', adid: '', android_id: '' }, + device_ver: '', + os_version: '', + usertime: 1571043797562, + device_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', + app_name: 'RudderLabs JavaScript SDK', + app_version: '1.0.0', + app_short_string: '1.0.0', + screen_dpi: 2, + locale: 'en-US', + event_name: 'screen view Home Screen', + event_data: { name: 'Home Screen' }, + origination_ip: '1.1.1.1', + }, + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: '00000000000000000000000000', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + adTrackingEnabled: true, + advertisingId: 'some_adid', + }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '5094f5704b9cf2b3', + data: { + app_tracking_transparency: { att: false }, + usertime: 1584003903421, + app_version: '1', + device_ver: 'Android SDK built for x86-Android-8.1.0', + device_ids: { + idfa: '', + idfv: '', + adid: 'some_adid', + android_id: '5094f5704b9cf2b3', + }, + device_ua: + 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)', + event_name: 'screen view MainActivity', + currency: 'USD', + event_data: { name: 'MainActivity', automatic: true }, + app_name: 'LeanPlumIntegrationAndroid', + app_short_string: '1.0', + locale: 'en-US', + os_version: '8.1.0', + screen_dpi: 420, + }, + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: '5094f5704b9cf2b3', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + adTrackingEnabled: true, + advertisingId: 'some_adid', + attTrackingStatus: 3, + }, + 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: '14.5' }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '5094f5704b9cf2b3', + data: { + app_tracking_transparency: { att: true }, + usertime: 1584003903421, + app_version: '1', + device_ver: 'Android SDK built for x86-iOS-14.5', + device_ids: { + idfa: 'some_adid', + idfv: '5094f5704b9cf2b3', + adid: '', + android_id: '', + }, + device_ua: + 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)', + event_name: 'screen view MainActivity', + currency: 'USD', + event_data: { name: 'MainActivity', automatic: true }, + app_name: 'LeanPlumIntegrationAndroid', + app_short_string: '1.0', + locale: 'en-US', + os_version: '14.5', + screen_dpi: 420, + }, + }, + XML: {}, + JSON_ARRAY: {}, + FORM: {}, + }, + files: {}, + userId: '5094f5704b9cf2b3', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: 'ipados', + adTrackingEnabled: true, + advertisingId: 'some_adid', + attTrackingStatus: 3, + }, + 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: 'ipados' }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '5094f5704b9cf2b3', + data: { + app_tracking_transparency: { att: true }, + usertime: 1584003903421, + app_version: '1', + device_ver: '', + device_ids: { + idfa: 'some_adid', + idfv: '5094f5704b9cf2b3', + adid: '', + android_id: '', + }, + device_ua: + 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)', + event_name: 'screen view MainActivity', + currency: 'USD', + event_data: { name: 'MainActivity', automatic: true }, + app_name: 'LeanPlumIntegrationAndroid', + app_short_string: '1.0', + locale: 'en-US', + screen_dpi: 420, + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '5094f5704b9cf2b3', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + anonymousId: '5094f5704b9cf2b3', + channel: 'mobile', + context: { + app: { + build: '1', + name: 'LeanPlumIntegrationAndroid', + namespace: 'com.android.SampleLeanPlum', + version: '1.0', + }, + device: { + manufacturer: 'Google', + model: 'Android SDK built for x86', + name: 'generic_x86', + type: 'android', + adTrackingEnabled: true, + }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '5094f5704b9cf2b3', + data: { + app_tracking_transparency: { att: false }, + usertime: 1584003903421, + app_version: '1', + device_ver: 'Android SDK built for x86-Android-8.1.0', + device_ids: { idfa: '', idfv: '', adid: '', android_id: '5094f5704b9cf2b3' }, + device_ua: + 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)', + event_name: 'screen view MainActivity', + currency: 'USD', + event_data: { name: 'MainActivity', automatic: true }, + app_name: 'LeanPlumIntegrationAndroid', + app_short_string: '1.0', + locale: 'en-US', + os_version: '8.1.0', + screen_dpi: 420, + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '5094f5704b9cf2b3', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + anonymousId: '5094f5704b9cf2b3', + channel: 'mobile', + context: { + app: { + build: '1', + name: 'LeanPlumIntegrationAndroid', + namespace: 'com.android.SampleLeanPlum', + version: '1.0', + }, + device: { + manufacturer: 'Google', + model: 'Android SDK built for x86', + name: 'generic_x86', + type: 'android', + adTrackingEnabled: true, + }, + 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 }, + 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: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '5094f5704b9cf2b3', + data: { + app_tracking_transparency: { att: false }, + usertime: 1584003903421, + app_version: '1', + device_ver: '', + device_ids: { idfa: '', idfv: '', adid: '', android_id: '' }, + device_ua: + 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Android SDK built for x86 Build/OSM1.180201.007)', + event_name: 'screen view MainActivity', + currency: 'USD', + event_data: { name: 'MainActivity', automatic: true }, + app_name: 'LeanPlumIntegrationAndroid', + app_short_string: '1.0', + locale: 'en-US', + screen_dpi: 420, + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '5094f5704b9cf2b3', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + locale: 'en-US', + ip: '1.1.1.1', + os: { name: '', version: '' }, + screen: { density: 2 }, + }, + type: 'screen', + name: 'Home Screen', + messageId: '84e26acc-56a5-4835-8233-591137fca468', + timestamp: '2019-10-14T09:03:17.562Z', + originalTimestamp: '2019-10-14T09:03:17.562Z', + anonymousId: '00000000000000000000000000', + userId: '123456', + integrations: { All: true }, + sentAt: '2019-10-14T09:03:22.563Z', + }, + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + 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: '' }, + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + locale: 'en-US', + ip: '1.1.1.1', + os: { name: 'ios', version: '' }, + device: { attTrackingStatus: 3 }, + screen: { density: 2 }, + }, + type: 'screen', + name: 'Home Screen', + messageId: '84e26acc-56a5-4835-8233-591137fca468', + timestamp: '2019-10-14T09:03:17.562Z', + originalTimestamp: '2019-10-14T09:03:17.562Z', + anonymousId: '00000000000000000000000000', + userId: '123456', + integrations: { All: true }, + sentAt: '2019-10-14T09:03:22.563Z', + }, + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '00000000000000000000000000', + data: { + app_tracking_transparency: { att: true }, + usertime: 1571043797562, + app_version: '1.0.0', + device_ver: '', + device_ids: { + idfa: '', + idfv: '00000000000000000000000000', + adid: '', + android_id: '', + }, + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + locale: 'en-US', + ip: '1.1.1.1', + os: { name: 'tvOS', version: '' }, + screen: { density: 2 }, + }, + type: 'screen', + name: 'Home Screen', + messageId: '84e26acc-56a5-4835-8233-591137fca468', + timestamp: '2019-10-14T09:03:17.562Z', + originalTimestamp: '2019-10-14T09:03:17.562Z', + anonymousId: '00000000000000000000000000', + userId: '123456', + integrations: { All: true }, + sentAt: '2019-10-14T09:03:22.563Z', + }, + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + kochava_device_id: '00000000000000000000000000', + data: { + app_tracking_transparency: { att: false }, + usertime: 1571043797562, + app_version: '1.0.0', + device_ver: '', + device_ids: { + idfa: '', + idfv: '00000000000000000000000000', + adid: '', + android_id: '', + }, + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'kochava', + 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' }, + locale: 'en-US', + ip: '1.1.1.1', + os: { name: 'android', version: '' }, + screen: { density: 2 }, + }, + type: 'screen', + name: 'Home Screen', + messageId: '84e26acc-56a5-4835-8233-591137fca468', + timestamp: '2019-10-14T09:03:17.562Z', + originalTimestamp: '2019-10-14T09:03:17.562Z', + anonymousId: '00000000000000000000000000', + userId: '123456', + integrations: { All: true }, + sentAt: '2019-10-14T09:03:22.563Z', + }, + destination: { + Config: { apiKey: '' }, + DestinationDefinition: { + Config: { cdkEnabled: true }, + DisplayName: 'Kochava', + ID: '1WTpBSTiL3iAUHUdW7rHT4sawgU', + Name: 'KOCHAVA', + }, + Enabled: true, + ID: '1WTpIHpH7NTBgjeiUPW1kCUgZGI', + Name: 'kochava test', + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://control.kochava.com/track/json', + headers: {}, + params: {}, + body: { + JSON: { + action: 'event', + kochava_app_id: '', + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/lambda/processor/data.ts b/test/integrations/destinations/lambda/processor/data.ts new file mode 100644 index 0000000000..540de25417 --- /dev/null +++ b/test/integrations/destinations/lambda/processor/data.ts @@ -0,0 +1,498 @@ +export const data = [ + { + name: 'lambda', + description: 'Simple Identify call', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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, + }, + 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' }, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lambda', + description: 'Destination config not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'destination.Config cannot be undefined', + 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, + }, + statTags: { + destType: 'LAMBDA', + errorCategory: 'dataValidation', + destinationId: '2CojwY2YqpiTqfBPrMAUN8orgHA', + workspaceId: '2ANaDOTAzxboCOF86FkRGMEJ5F7', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/lambda/router/data.ts b/test/integrations/destinations/lambda/router/data.ts new file mode 100644 index 0000000000..37b13e4d2a --- /dev/null +++ b/test/integrations/destinations/lambda/router/data.ts @@ -0,0 +1,38788 @@ +export const data = [ + { + name: 'lambda', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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', + }, + }, + ], + destType: 'lambda', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/leanplum/processor/data.ts b/test/integrations/destinations/leanplum/processor/data.ts new file mode 100644 index 0000000000..a866b035a8 --- /dev/null +++ b/test/integrations/destinations/leanplum/processor/data.ts @@ -0,0 +1,1708 @@ +export const data = [ + { + name: 'leanplum', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "Missing required value from [\"properties.name\",\"event\"]", + statTags: { + destType: 'LEANPLUM', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'leanplum', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "Missing required value from [\"properties.name\",\"event\"]", + statTags: { + destType: 'LEANPLUM', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 12', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'leanplum', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/leanplum/router/data.ts b/test/integrations/destinations/leanplum/router/data.ts new file mode 100644 index 0000000000..db75a7fdc4 --- /dev/null +++ b/test/integrations/destinations/leanplum/router/data.ts @@ -0,0 +1,370 @@ +export const data = [ + { + name: 'leanplum', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + }, + ], + destType: 'leanplum', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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, + }, + }, + }, + ], + }, + }, + }, + }, + { + name: 'leanplum', + description: 'Test 1', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + }, + ], + destType: 'leanplum', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/lemnisk/processor/data.ts b/test/integrations/destinations/lemnisk/processor/data.ts new file mode 100644 index 0000000000..9127e247c8 --- /dev/null +++ b/test/integrations/destinations/lemnisk/processor/data.ts @@ -0,0 +1,1088 @@ +export const data = [ + { + name: 'lemnisk', + description: 'Error: Event Type is required ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'LEMNISK', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: 'Error: Pl Track: Invalid Configuration', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Configuration for Web Mode requires write key and region url', + statTags: { + destType: 'LEMNISK', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: 'Error: Invalid Configs for Diapi', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Configuration for Server Mode requires Api key, Pass Key and region url', + statTags: { + destType: 'LEMNISK', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: 'Diapi Platform: Track Call', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: 'Error: Message type not supported', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type alias is not supported in Web Cloud Mode', + statTags: { + destType: 'LEMNISK', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: ' Page Call -> pl Platform ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: ' Identify Call -> pl Platform ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lemnisk', + description: ' Track Call -> pl Platform ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/lemnisk/router/data.ts b/test/integrations/destinations/lemnisk/router/data.ts new file mode 100644 index 0000000000..1a1b84f180 --- /dev/null +++ b/test/integrations/destinations/lemnisk/router/data.ts @@ -0,0 +1,664 @@ +export const data = [ + { + name: 'lemnisk', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + 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', + }, + }, + ], + destType: 'lemnisk', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + 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: { + destType: 'LEMNISK', + feature: 'router', + implementation: 'native', + module: 'destination', + 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/integrations/destinations/lytics/processor/data.ts b/test/integrations/destinations/lytics/processor/data.ts new file mode 100644 index 0000000000..e04b1aa413 --- /dev/null +++ b/test/integrations/destinations/lytics/processor/data.ts @@ -0,0 +1,1360 @@ +export const data = [ + { + name: 'lytics', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + metadata: { destinationID: 'ewksfdgDFSdvzsdmwsdfvcxj' }, + destination: { + DestinationDefinition: { Config: { cdkEnabled: true } }, + Config: { apiKey: 'dummyApiKey', stream: 'default' }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + 'Unknown error occurred. Original error: "type" is a required field and it must be a string', + metadata: { destinationID: 'ewksfdgDFSdvzsdmwsdfvcxj' }, + statTags: { + destType: 'LYTICS', + errorCategory: 'transformation', + feature: 'processor', + implementation: 'cdkV1', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + metadata: { destinationID: 'ewksfdgDFSdvzsdmwsdfvcxj' }, + destination: { + DestinationDefinition: { Config: { cdkEnabled: true } }, + Config: { apiKey: 'dummyApiKey', stream: 'default' }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Bad event. Original error: message type "gone" not supported for "lytics"', + metadata: { destinationID: 'ewksfdgDFSdvzsdmwsdfvcxj' }, + statTags: { + destType: 'LYTICS', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'cdkV1', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'lytics', + 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.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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + 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', + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + 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: '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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'lytics', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/lytics/router/data.ts b/test/integrations/destinations/lytics/router/data.ts new file mode 100644 index 0000000000..98aded20bf --- /dev/null +++ b/test/integrations/destinations/lytics/router/data.ts @@ -0,0 +1,351 @@ +export const data = [ + { + name: 'lytics', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + ], + destType: 'lytics', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/mailjet/processor/data.ts b/test/integrations/destinations/mailjet/processor/data.ts new file mode 100644 index 0000000000..71e06dc14e --- /dev/null +++ b/test/integrations/destinations/mailjet/processor/data.ts @@ -0,0 +1,229 @@ +export const data = [ + { + name: 'mailjet', + description: 'No Message type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'MAILJET', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailjet', + description: 'Unsupported Type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type "trackuser" is not supported', + statTags: { + destType: 'MAILJET', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailjet', + description: 'MailJet identify call without an email', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Missing required value from "email"', + statTags: { + destType: 'MAILJET', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailjet', + description: 'Mailjet identify call without batching', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' }], + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/mailjet/router/data.ts b/test/integrations/destinations/mailjet/router/data.ts new file mode 100644 index 0000000000..85c96629ff --- /dev/null +++ b/test/integrations/destinations/mailjet/router/data.ts @@ -0,0 +1,106 @@ +export const data = [ + { + name: 'mailjet', + description: 'Test 0', + 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, + }, + 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, + }, + ], + batched: true, + statusCode: 200, + destination: { + Config: { + apiKey: 'dummyApiKey', + apiSecret: 'dummyApiSecret', + listId: '58578', + contactPropertiesMapping: [ + { + from: 'userCountry', + to: 'country', + }, + ], + }, + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/mailmodo/processor/data.ts b/test/integrations/destinations/mailmodo/processor/data.ts new file mode 100644 index 0000000000..45a14e2a52 --- /dev/null +++ b/test/integrations/destinations/mailmodo/processor/data.ts @@ -0,0 +1,648 @@ +export const data = [ + { + name: 'mailmodo', + description: 'Track call', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Providing empty API Key', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'API Key is not present, Aborting event', + statTags: { + destType: 'MAILMODO', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Not providing event type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'MAILMODO', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Page call- not supported', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type page is not supported', + statTags: { + destType: 'MAILMODO', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Identify call- with empty listName', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Identify call- with listName', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Identify call- without email', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + 'Missing required value from ["traits.email","context.traits.email","properties.email"]', + statTags: { + destType: 'MAILMODO', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Identify call- with user properties(address as an object)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'mailmodo', + description: 'Identify call- with user properties(address as a string)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/mailmodo/router/data.ts b/test/integrations/destinations/mailmodo/router/data.ts new file mode 100644 index 0000000000..c341259bbe --- /dev/null +++ b/test/integrations/destinations/mailmodo/router/data.ts @@ -0,0 +1,294 @@ +export const data = [ + { + name: 'mailmodo', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + ], + destType: 'mailmodo', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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: { + destType: 'MAILMODO', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'router', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + destination: { + Config: { + apiKey: 'dummyApiKey', + listName: '', + }, + Enabled: true, + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/marketo_static_list/processor/data.ts b/test/integrations/destinations/marketo_static_list/processor/data.ts new file mode 100644 index 0000000000..51e4e87824 --- /dev/null +++ b/test/integrations/destinations/marketo_static_list/processor/data.ts @@ -0,0 +1,1194 @@ +export const data = [ + { + name: 'marketo_static_list', + description: 'adding and removing users and getting staticListId from externalId', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 3421, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + properties: { + listData: { + 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' }, + externalId: [{ type: 'marketoStaticListId', id: 1234 }], + }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1&id=2&id=3', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + { + output: { + version: '1', + type: 'REST', + method: 'DELETE', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=4&id=5&id=6', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'marketo_static_list', + description: 'adding more than max limit users', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + 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 }, + ], + }, + enablePartialFailure: true, + }, + context: { ip: '14.5.67.21', library: { name: 'http' } }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'marketo_static_list', + description: 'removing more than max limit users', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + properties: { + listData: { + remove: [ + { 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' } }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'DELETE', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + { + output: { + version: '1', + type: 'REST', + method: 'DELETE', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'marketo_static_list', + description: 'unsupported message Type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'track', + properties: { listData: { remove: [1] }, enablePartialFailure: true }, + context: { ip: '14.5.67.21', library: { name: 'http' } }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type track is not supported', + statTags: { + destType: 'MARKETO_STATIC_LIST', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'marketo_static_list', + description: 'Invalid leadIds format ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + properties: { listData: { remove: 1 }, enablePartialFailure: true }, + context: { ip: '14.5.67.21', library: { name: 'http' } }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Invalid leadIds format or no leadIds found neither to add nor to remove', + statTags: { + destType: 'MARKETO_STATIC_LIST', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'marketo_static_list', + description: 'Only adding with remove not an array', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + properties: { listData: { add: [{ id: 1 }], remove: 2 }, enablePartialFailure: true }, + context: { ip: '14.5.67.21', library: { name: 'http' } }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=1', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { JSON: {}, JSON_ARRAY: {}, XML: {}, FORM: {} }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/marketo_static_list/router/data.ts b/test/integrations/destinations/marketo_static_list/router/data.ts new file mode 100644 index 0000000000..23b2ea8ea3 --- /dev/null +++ b/test/integrations/destinations/marketo_static_list/router/data.ts @@ -0,0 +1,1416 @@ +export const data = [ + { + name: 'marketo_static_list', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + properties: { + listData: { + 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', + }, + }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + metadata: { + jobId: 1, + }, + }, + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'audiencelist', + 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, + }, + ], + }, + enablePartialFailure: true, + }, + context: { + ip: '14.5.67.21', + library: { + name: 'http', + }, + }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + metadata: { + jobId: 2, + }, + }, + { + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + message: { + userId: 'user 1', + anonymousId: 'anon-id-new', + event: 'event1', + type: 'track', + properties: { + listData: { + remove: [1], + }, + enablePartialFailure: true, + }, + context: { + ip: '14.5.67.21', + library: { + name: 'http', + }, + }, + timestamp: '2020-02-02T00:23:09.544Z', + }, + metadata: { + jobId: 3, + }, + }, + ], + destType: 'marketo_static_list', + }, + 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/lists/1234/leads.json?id=1&id=2&id=3', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: {}, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + { + version: '1', + type: 'REST', + method: 'DELETE', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?id=4&id=5&id=6', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: {}, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + ], + metadata: [ + { + destInfo: { + authKey: '1zia9wKshXt80YksLmUdJnr7IHI', + }, + jobId: 1, + }, + ], + batched: false, + statusCode: 200, + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + }, + { + batchedRequest: [ + { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: {}, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + { + version: '1', + type: 'REST', + method: 'POST', + endpoint: + 'https://marketo_acct_id_success.mktorest.com/rest/v1/lists/1234/leads.json?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', + headers: { + Authorization: 'Bearer access_token_success', + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: {}, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + ], + metadata: [ + { + destInfo: { + authKey: '1zia9wKshXt80YksLmUdJnr7IHI', + }, + jobId: 2, + }, + ], + batched: false, + statusCode: 200, + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + }, + { + metadata: [ + { + destInfo: { + authKey: '1zia9wKshXt80YksLmUdJnr7IHI', + }, + jobId: 3, + }, + ], + destination: { + ID: '1zia9wKshXt80YksLmUdJnr7IHI', + Name: 'test_marketo', + DestinationDefinition: { + ID: '1iVQvTRMsPPyJzwol0ifH93QTQ6', + Name: 'MARKETO', + DisplayName: 'Marketo', + transformAt: 'processor', + transformAtV1: 'processor', + }, + Config: { + clientId: 'marketo_client_id_success', + clientSecret: 'marketo_client_secret_success', + accountId: 'marketo_acct_id_success', + staticListId: 1234, + }, + Enabled: true, + Transformations: [], + IsProcessorEnabled: true, + }, + batched: false, + statusCode: 400, + error: 'Event type track is not supported', + statTags: { + errorCategory: 'dataValidation', + errorType: 'instrumentation', + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/moengage/processor/data.ts b/test/integrations/destinations/moengage/processor/data.ts new file mode 100644 index 0000000000..50b0361381 --- /dev/null +++ b/test/integrations/destinations/moengage/processor/data.ts @@ -0,0 +1,2780 @@ +export const data = [ + { + name: 'moengage', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'The region is not valid', + statTags: { + destType: 'MOENGAGE', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'MOENGAGE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type gone is not supported', + statTags: { + destType: 'MOENGAGE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 12', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 14', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'moengage', + description: 'Test 15', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Missing required value from "previousId"', + statTags: { + destType: 'MOENGAGE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/moengage/router/data.ts b/test/integrations/destinations/moengage/router/data.ts new file mode 100644 index 0000000000..a5664906e5 --- /dev/null +++ b/test/integrations/destinations/moengage/router/data.ts @@ -0,0 +1,480 @@ +export const data = [ + { + name: 'moengage', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + ], + destType: 'moengage', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/monetate/processor/data.ts b/test/integrations/destinations/monetate/processor/data.ts new file mode 100644 index 0000000000..2202ab2b25 --- /dev/null +++ b/test/integrations/destinations/monetate/processor/data.ts @@ -0,0 +1,2796 @@ +export const data = [ + { + name: 'monetate', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "'product_id' is a required field for Product Viewed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type identify is not supported', + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + "'product_id', 'quantity', 'cart_value' are required fields and 'quantity' should be a number for Product Added", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 12', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + "'quantity', 'price' and 'product_id' are required fields and 'quantity' and 'price' should be a number for all products for Cart Viewed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 14', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 15', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 16', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 17', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 18', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 19', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 20', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 21', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type identify is not supported', + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 22', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 23', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 24', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + "'quantity', 'price' and 'product_id' are required fields and 'quantity' and 'price' should be a number for all products for Order Completed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 25', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 26', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + "'product_id', 'quantity', 'cart_value' are required fields and 'quantity' should be a number for Product Added", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 27', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "'product_id' is a required field for all products for Product List Viewed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 28', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "'product_id' is a required field for Product Viewed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'monetate', + description: 'Test 29', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: "'products' missing or not array in Product List Viewed", + statTags: { + destType: 'MONETATE', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/monetate/router/data.ts b/test/integrations/destinations/monetate/router/data.ts new file mode 100644 index 0000000000..09a7f8073d --- /dev/null +++ b/test/integrations/destinations/monetate/router/data.ts @@ -0,0 +1,264 @@ +export const data = [ + { + name: 'monetate', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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', + }, + }, + }, + ], + destType: 'monetate', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/ometria/processor/data.ts b/test/integrations/destinations/ometria/processor/data.ts new file mode 100644 index 0000000000..c28854c9fd --- /dev/null +++ b/test/integrations/destinations/ometria/processor/data.ts @@ -0,0 +1,1078 @@ +export const data = [ + { + name: 'ometria', + 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: { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'ometria', + 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: '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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/ometria/router/data.ts b/test/integrations/destinations/ometria/router/data.ts new file mode 100644 index 0000000000..ef15eea586 --- /dev/null +++ b/test/integrations/destinations/ometria/router/data.ts @@ -0,0 +1,336 @@ +export const data = [ + { + name: 'ometria', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + ], + destType: 'ometria', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/one_signal/processor/data.ts b/test/integrations/destinations/one_signal/processor/data.ts new file mode 100644 index 0000000000..7f244aa711 --- /dev/null +++ b/test/integrations/destinations/one_signal/processor/data.ts @@ -0,0 +1,1545 @@ +export const data = [ + { + name: 'one_signal', + description: + 'Identify call for creating new device (phone and playerId is not available in the payload). Integrations object is also not available.', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + { + 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: 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + 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.', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + { + 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: 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: {}, + userId: '', + }, + statusCode: 200, + }, + { + 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: 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: + 'Identify call for creating a new device(deviceType and identifier is present in the integrations object, playerId not present)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: + 'Identify call for creating a new device(channel is mobile and integrations object is not present, playerId not present)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Identify call for Editing a device using playerId', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Track call for updating tags using external_user_id', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: + 'Track call for updating tags using external_user_id (with concatenated event name)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: + 'Track call with tags key having empty value( Output Behaviour: Those keys will be deleted)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Track call having no allowed properties)', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Group call ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Check for appId', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'appId is a required field', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Check for message type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Message type page is not supported', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Validating deviceType', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'device_type 15 is not a valid device_type', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'check for Message type not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Check for event name in the track call', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event is not present in the input payloads', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Check for groupId ', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'groupId is required for group events', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'one_signal', + description: 'Check for user Id (required field to update the device) for track call', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'userId is required for track events/updating a device', + statTags: { + destType: 'ONE_SIGNAL', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/one_signal/router/data.ts b/test/integrations/destinations/one_signal/router/data.ts new file mode 100644 index 0000000000..5f45d2e624 --- /dev/null +++ b/test/integrations/destinations/one_signal/router/data.ts @@ -0,0 +1,286 @@ +export const data = [ + { + name: 'one_signal', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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', + }, + }, + ], + destType: 'one_signal', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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/integrations/destinations/pagerduty/processor/data.ts b/test/integrations/destinations/pagerduty/processor/data.ts new file mode 100644 index 0000000000..97fe22daa0 --- /dev/null +++ b/test/integrations/destinations/pagerduty/processor/data.ts @@ -0,0 +1,782 @@ +export const data = [ + { + name: 'pagerduty', + description: 'No Message type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Routing Key is not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Routing Key Is Required', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Unsupported Event type', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type alias is not supported', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'event name is not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + channel: 'web', + type: 'track', + messageId: '9116b734-7e6b-4497-ab51-c16744d4487e', + userId: 'user@45', + properties: {}, + }, + destination: { Config: { routingKey: '9552b56325dc490bd0139be85f7b8fac' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event name is required', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Parameter source is not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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' } }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Missing required value from "properties.source"', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'dedup_key is not present', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'dedup_key required for resolve events', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Timestamp older then 90 days', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Events must be sent within ninety days of their occurrence', + statTags: { + destType: 'PAGERDUTY', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Trigger event', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Acknowledge event', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Resolve event', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pagerduty', + description: 'Change event', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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', + }, + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/pagerduty/router/data.ts b/test/integrations/destinations/pagerduty/router/data.ts new file mode 100644 index 0000000000..02fd53c629 --- /dev/null +++ b/test/integrations/destinations/pagerduty/router/data.ts @@ -0,0 +1,309 @@ +export const data = [ + { + name: 'pagerduty', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + 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', + }, + }, + }, + ], + destType: 'pagerduty', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + 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: { + destType: 'PAGERDUTY', + feature: 'router', + module: 'destination', + implementation: 'native', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + }, + destination: { + Config: { + routingKey: '9552b56325dc490bd0139be85f7b8fac', + dedupKeyFieldIdentifier: 'properties.dedupKey', + }, + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/pardot/router/data.ts b/test/integrations/destinations/pardot/router/data.ts new file mode 100644 index 0000000000..573f9192b5 --- /dev/null +++ b/test/integrations/destinations/pardot/router/data.ts @@ -0,0 +1,1017 @@ +export const data = [ + { + name: 'pardot', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + 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, + }, + }, + }, + ], + destType: 'pardot', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + 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: 'Empty/Invalid access token', + statTags: { + destType: 'PARDOT', + feature: 'router', + implementation: 'native', + errorCategory: 'platform', + module: 'destination', + errorType: 'oAuthSecret', + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/personalize/processor/data.ts b/test/integrations/destinations/personalize/processor/data.ts new file mode 100644 index 0000000000..012aae25bb --- /dev/null +++ b/test/integrations/destinations/personalize/processor/data.ts @@ -0,0 +1,4188 @@ +export const data = [ + { + name: 'personalize', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + metadata: { + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + destinationType: 'PERSONALIZE', + jobId: 1, + messageId: '4bb69e26-b5a6-446a-a140-dbb6263369c9', + messageIds: null, + receivedAt: '2021-03-13T01:56:44.340+05:30', + rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968', + sourceId: '1pe7ty3hMMQCnrfZ0Mn2QG48884', + }, + output: { + 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' }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + 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 }, + }, + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + payload: { + datasetArn: + 'arn:aws:personalize:us-east-1:454531037350:dataset/putTest_DataSetGroup/USERS', + users: [ + { + userId: '123456', + properties: { typeOfMovie: 'art film', numberOfRatings: '13' }, + }, + ], + }, + choice: 'PutUsers', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 14', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type is required', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 15', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Mapped property typeOfMovie not found', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 16', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Either Dataset ARN is not correctly entered or invalid', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 17', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Dataset ARN is a mandatory information to use putItems', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 18', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'PutUsers is not supported for Track Calls', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 19', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Tracking Id is a mandatory information to use putEvents', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 20', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'itemId is a mandatory property for using PutItems', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 21', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Cannot process if no event name specified', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'This Message Type does not support PutItems. Aborting message', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Dataset ARN is a mandatory information to use putUsers', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Either Dataset ARN is not correctly entered or invalid', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + 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', + }, + library: { name: 'RudderLabs JavaScript SDK', version: '1.0.0' }, + userAgent: + 'Mozilla/5.0 (Macintosh; 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Mapped property numberOfRatings not found', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 26', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Event type screen is not supported', + 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', + }, + statTags: { + destType: 'PERSONALIZE', + errorCategory: 'dataValidation', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 27', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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' }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 28', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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' }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 29', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + 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', + }, + output: { + 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' }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'personalize', + description: 'Test 30', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + 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: {} }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + metadata: { + sourceId: '1pe7ty3hMMQCnrfZ0Mn2QG48884', + destinationId: '1pe9WgFOuFHOSIfmUkkhVTD1Rsd', + jobId: 1, + destinationType: 'PERSONALIZE', + messageId: '4bb69e26-b5a6-446a-a140-dbb6263369c9', + messageIds: null, + rudderId: 'daf823fb-e8d3-413a-8313-d34cd756f968', + }, + output: { + sessionId: '4bb69e26-b5a6-446a-a140-dbb6263369c9', + trackingId: 'c60', + userId: '', + 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' }, + }, + ], + }, + statusCode: 200, + }, + ], + }, + }, + }, +]; diff --git a/test/integrations/destinations/pinterest_tag/processor/data.ts b/test/integrations/destinations/pinterest_tag/processor/data.ts new file mode 100644 index 0000000000..344d4ff507 --- /dev/null +++ b/test/integrations/destinations/pinterest_tag/processor/data.ts @@ -0,0 +1,3435 @@ +export const data = [ + { + name: 'pinterest_tag', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + gender: 'non-binary', + 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: { + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + sendAsTestEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: { test: true }, + body: { + JSON: { + action_source: 'web', + event_name: 'watch_video', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + ge: ['1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9'], + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Order completed', + 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', + 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', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'checkout', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'product added', + 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: { + product_id: '123', + 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', + 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', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'add_to_cart', + action_source: 'web', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 2, + content_ids: ['123'], + contents: [{ quantity: 2, item_price: '25' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Product List Filtered', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + 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', + destinationDefinition: { Config: { cdkV2Enabled: true } }, + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: + 'Advertiser Id not found. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Advertiser Id not found. Aborting', + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Product List Filtered', + sentAt: '2020-08-14T05:30:30.118Z', + channel: 'web', + context: { + source: 'test', + userAgent: 'chrome', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: '+1234589947', + ge: 'male', + db: '19950715', + lastname: 'Rudderlabs', + firstName: 'Test', + address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' }, + }, + 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', + 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', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + error: + 'It is required at least one of em, hashed_maids or pair of client_ip_address and client_user_agent: Workflow: procWorkflow, Step: validateUserFields, ChildStep: undefined, OriginalError: It is required at least one of em, hashed_maids or pair of client_ip_address and client_user_agent', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + numOfItems: 2, + 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', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'watch_video', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + num_items: 2, + order_id: '50314b8e9bcf000000000000', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + numOfItems: 2, + 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', + advertiserId: '', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: + 'Advertiser Id not found. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Advertiser Id not found. Aborting', + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'group', + event: 'ABC Searched', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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', + advertiserId: '123456', + appId: '429047995', + enhancedMatch: true, + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + 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: + 'message type group is not supported: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: message type group is not supported', + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + channel: 'abc', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + error: + 'Action source must be one of app_android, app_ios, web, offline: Workflow: procWorkflow, Step: validateCommonFields, ChildStep: undefined, OriginalError: Action source must be one of app_android, app_ios, web, offline', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + action_source: 'web', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + num_items: 2, + order_id: '50314b8e9bcf000000000000', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'page_visit', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 12', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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', adTrackingEnabled: true }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + opt_out: false, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + ip: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: '+1234589947', + ge: 'male', + db: '19950715', + lastname: 'Rudderlabs', + firstName: 'Test', + address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' }, + }, + device: { adTrackingEnabled: false }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + opt_out: true, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + client_ip_address: '127.0.0.0', + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 14', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + requestIP: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: 'Hashed phone', + gender: 'Hashed Gender', + dob: 'Hashed DB', + lastname: 'Hashed Lastname', + firstName: 'Hashed FirstName', + address: { + city: 'Hashed City', + state: 'Hashed State', + zip: 'Hashed Zip', + country: 'Hashed country', + }, + }, + device: { adTrackingEnabled: false, advertisingId: 'Hashed maids' }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: false, + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + action_source: 'web', + opt_out: true, + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + user_data: { + ph: ['Hashed phone'], + db: ['Hashed DB'], + ln: ['Hashed Lastname'], + fn: ['Hashed FirstName'], + ct: ['Hashed City'], + st: ['Hashed State'], + zp: ['Hashed Zip'], + country: ['Hashed country'], + hashed_maids: ['Hashed maids'], + ge: ['Hashed Gender'], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 15', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + requestIP: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: ['Hashed phone', 'Hashed phone1'], + gender: ['Hashed Gender', 'Hashed Gender1'], + dob: ['Hashed DB', 'Hashed DB1'], + lastname: ['Hashed Lastname', 'Hashed Lastname1'], + firstName: ['Hashed FirstName', 'Hashed FirstName1'], + address: { + city: ['Hashed City', 'Hashed City1'], + state: ['Hashed State', 'Hashed State1'], + zip: ['Hashed Zip', 'Hashed Zip1'], + country: ['Hashed country', 'Hashed country1'], + }, + }, + device: { adTrackingEnabled: false, advertisingId: 'Hashed maids' }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: false, + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + action_source: 'web', + opt_out: true, + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + user_data: { + ph: ['Hashed phone', 'Hashed phone1'], + db: ['Hashed DB', 'Hashed DB1'], + ln: ['Hashed Lastname', 'Hashed Lastname1'], + fn: ['Hashed FirstName', 'Hashed FirstName1'], + ct: ['Hashed City', 'Hashed City1'], + st: ['Hashed State', 'Hashed State1'], + zp: ['Hashed Zip', 'Hashed Zip1'], + country: ['Hashed country', 'Hashed country1'], + hashed_maids: ['Hashed maids'], + ge: ['Hashed Gender', 'Hashed Gender1'], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 16', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + name: 'Test Tool', + type: 'page', + sentAt: '2023-02-01T00:00:00.379Z', + userId: '', + channel: 'web', + context: { + os: { name: '', version: '' }, + app: { + name: 'RudderLabs JavaScript SDK', + version: '2.22.3', + namespace: 'com.rudderlabs.javascript', + }, + page: { + url: 'https://www.abc.com/s598907', + path: '/test-path/s598907', + title: 'Test Tool + Reviews | Rudderstack', + search: '', + tab_url: 'https://www.abc.com/s598907', + referrer: '$direct', + initial_referrer: '$direct', + referring_domain: '', + initial_referring_domain: '', + }, + locale: 'en-US', + screen: { + width: 1024, + height: 1024, + density: 1, + innerWidth: 1024, + innerHeight: 1024, + }, + traits: {}, + library: { name: 'RudderLabs JavaScript SDK', version: '2.22.3' }, + campaign: {}, + doNotSell: false, + sessionId: 1675209600203, + userAgent: + 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/109.0.5414.101 Safari/537.36', + gaClientId: { + integrations: { + 'Google Ads': { gclid: '' }, + 'Google Analytics': { clientId: '1518934611.1234569600' }, + }, + }, + sessionStart: true, + }, + rudderId: '7291a10f-e7dd-49f9-94ce-0154f53897y6', + messageId: '1c77a616-13a7-4a2e-a8e7-e1a0971897y6', + timestamp: '2023-02-01T12:47:30.030Z', + properties: { + sku: '45790-32', + url: 'https://www.abc.com/23rty', + name: 'Test Tool', + path: '/test-path/tool', + email: '', + title: 'Test Tool + Reviews | Rudderstack', + review: { reviewCount: 2, averageReview: 5, reviewContentID: ['238300132'] }, + search: '', + tab_url: 'https://www.abc/com', + pageInfo: { + pageId: 's592897', + category: { + pageType: 'product', + subCategory: 'Dining & Kitchen Furniture', + pageTemplate: 'product detail grouper', + primaryCategory: 'Furniture', + }, + brandType: 'new brand', + }, + referrer: '', + subCategory: 'Dining & Kitchen Furniture', + primaryCategory: 'Furniture', + initial_referrer: '$direct', + referring_domain: '', + initial_referring_domain: '', + }, + receivedAt: '2023-02-01T12:47:30.038Z', + request_ip: '66.249.72.218', + anonymousId: 'a61c77a6-1613-474a-aee8-e7e1a0971047', + integrations: { All: true }, + originalTimestamp: '2023-02-01T00:00:00.371Z', + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123478671210', + sendingUnHashedData: false, + enableDeduplication: false, + eventsMapping: [ + { from: 'Product Added', to: 'AddToCart' }, + { from: 'Order Completed', to: 'Checkout' }, + { from: 'Product Viewed', to: 'PageVisit' }, + { from: 'Lead', to: 'Lead' }, + { from: 'Signup', to: 'Signup' }, + ], + enhancedMatch: true, + }, + Enabled: true, + Transformations: [], + }, + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + body: { + JSON: { + event_time: 1675255650, + event_source_url: 'https://www.abc.com/s598907', + action_source: 'web', + app_name: 'RudderLabs JavaScript SDK', + app_version: '2.22.3', + language: 'en-US', + event_id: '1c77a616-13a7-4a2e-a8e7-e1a0971897y6', + advertiser_id: '123478671210', + user_data: { + client_ip_address: '66.249.72.218', + client_user_agent: + 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/109.0.5414.101 Safari/537.36', + }, + event_name: 'page_visit', + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 17', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'test', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { + sku: '1234', + tax: 2, + total: 27.5, + coupon: 'hasbros', + revenue: 48, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + 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', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 0, + content_ids: ['1234'], + contents: [{ quantity: 1, item_price: 'undefined' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 18', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { + sku: '1234', + tax: 2, + total: 27.5, + coupon: 'hasbros', + revenue: 48, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + 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', + }, + ], + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 1, + content_ids: ['507f1f77bcf86cd799439011'], + contents: [{ quantity: 1, item_price: '19' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 19', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + 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', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + body: { + FORM: {}, + JSON: { + action_source: 'web', + advertiser_id: '123456', + app_id: '429047995', + custom_data: { + contents: [{ item_price: 'undefined', quantity: 1 }], + currency: 'USD', + num_items: 0, + order_id: '50314b8e9bcf000000000000', + value: '27.5', + }, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + event_name: 'custom event', + event_time: 1597383030, + user_data: { + client_user_agent: 'chrome', + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + }, + }, + JSON_ARRAY: {}, + XML: {}, + }, + endpoint: 'https://ct.pinterest.com/events/v3', + files: {}, + headers: { 'Content-Type': 'application/json' }, + method: 'POST', + params: {}, + type: 'REST', + version: '1', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 20', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Track call with v5 Api version and send external_id toggle enabled', + message: { + type: 'track', + event: 'ABC Searched', + 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'watch_video', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + external_id: [ + '3217d71a74c219d6e31e28267b313a7ceb6a2c032db1a091c9416b25b2ae2bc8', + ], + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 21', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Custom event with v5 Api version', + message: { + type: 'track', + event: 'random', + 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, + sendAsCustomEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 22', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: + 'Custom event with v5 Api version, with unhashed User Data and the values are an array of strings', + message: { + type: 'track', + event: 'random', + 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', 'def@gmail.com'], + phone: ['+1234589947', '+1234589948'], + ge: ['male', 'male'], + db: ['19950715', '19970615'], + lastname: ['Rudderlabs', 'Xu'], + firstName: ['Test', 'Alex'], + address: { + city: ['Kolkata', 'Mumbai'], + state: ['WB', 'MH'], + zip: ['700114', '700115'], + country: ['IN', '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, + sendAsCustomEvent: 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: [ + '48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08', + 'c392e50ebeca7bea4405e9c545023451ac56620031f81263f681269bde14218b', + ], + ph: [ + 'd164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b', + '22bdde2594851294f2a6f4c34af704e68b398b03129ea9ceb58f0ffe33f6db52', + ], + ln: [ + 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251', + '9c2f138690fca4890c3c4a6691610fbbbdf32091cc001f7355cfdf574baa52b9', + ], + fn: [ + '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', + '4135aa9dc1b842a653dea846903ddb95bfb8c5a10c504a7fa16e10bc31d1fdf0', + ], + ct: [ + '6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85', + 'd209bcc17778fd19fd2bc0c99a3868bf011da5162d3a75037a605768ebc276e2', + ], + st: [ + '3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd', + '1b0316ed1cfed044035c55363e02ccafab26d66b1c2746b94d17285f043324aa', + ], + zp: [ + '1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c', + '4d6755aa1e85517191f06cc91448696c173e1195ae51f94a1670116ac7b5c47b', + ], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 23', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Ad Account Id check in V5', + message: { + type: 'track', + event: 'random', + 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', + 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: '', + conversionToken: 'conversionToken123', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + sendAsCustomEvent: 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: + 'Ad Account ID not found. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Ad Account ID not found. Aborting', + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 24', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Conversion Token check in V5', + message: { + type: 'track', + event: 'random', + 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', + 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: '', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + sendAsCustomEvent: 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: + 'Conversion Token not found. Aborting: Workflow: procWorkflow, Step: validateInput, ChildStep: undefined, OriginalError: Conversion Token not found. Aborting', + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + feature: 'processor', + implementation: 'cdkV2', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 25', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + 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, + sendAsCustomEvent: false, + 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: [ + { + metadata: { destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq' }, + error: + "custom event is not mapped in UI. Make sure to map the event in UI or enable the 'send as custom event' setting: Workflow: procWorkflow, Step: eventNames, ChildStep: undefined, OriginalError: custom event is not mapped in UI. Make sure to map the event in UI or enable the 'send as custom event' setting", + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'platform', + 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 new file mode 100644 index 0000000000..e004be25f0 --- /dev/null +++ b/test/integrations/destinations/pinterest_tag/router/data.ts @@ -0,0 +1,2153 @@ +export const data = [ + { + destType: 'pinterest_tag', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 1, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'Order completed', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 2, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'product added', + 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: { + product_id: '123', + 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', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { + All: true, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 3, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'Product List Filtered', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 4, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'Identify', + event: 'User Signup', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 5, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'User Created', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 6, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + version: '1', + statusCode: 200, + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'WatchVideo', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['bdfdee6414a89d72bfbf5ee90b1f85924467bae1e3980d83c2cd348dc31d5819'], + fn: ['ee5db3fe0253b651aca3676692e0c59b25909304f5c51d223a02a215d104144b'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 7, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + destType: 'pinterest_tag', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + batchedRequest: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { + 'Content-Type': 'application/json', + }, + params: {}, + body: { + JSON: { + data: [ + { + event_name: 'watch_video', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + opt_out_type: 'LDP', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'signup', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + opt_out_type: 'LDP', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'checkout', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'add_to_cart', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 2, + content_ids: ['123'], + contents: [ + { + quantity: 2, + item_price: '25', + }, + ], + }, + }, + { + event_name: 'search', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'signup', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + action_source: 'web', + event_name: 'WatchVideo', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['bdfdee6414a89d72bfbf5ee90b1f85924467bae1e3980d83c2cd348dc31d5819'], + fn: ['ee5db3fe0253b651aca3676692e0c59b25909304f5c51d223a02a215d104144b'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + ], + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + 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, + }, + ], + batched: true, + statusCode: 200, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + metadata: [ + { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 5, + }, + ], + statTags: { + destType: 'PINTEREST_TAG', + feature: 'router', + implementation: 'cdkV2', + module: 'destination', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + }, + batched: false, + statusCode: 400, + error: 'message type identify is not supported', + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + }, + }, + }, + }, + { + destType: 'pinterest_tag', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 8, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: 'accountId123', + conversionToken: 'conversionToken123', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'Order completed', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 9, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: 'accountId123', + conversionToken: 'conversionToken123', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + { + message: { + type: 'track', + event: 'Test', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 10, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: 'accountId123', + conversionToken: 'conversionToken123', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + destType: 'pinterest_tag', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + batchedRequest: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + data: [ + { + event_name: 'watch_video', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + opt_out_type: 'LDP', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'signup', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + opt_out_type: 'LDP', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'checkout', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + { + event_name: 'custom', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { + quantity: 1, + item_price: '19', + }, + { + quantity: 2, + item_price: '3', + }, + ], + }, + }, + ], + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + }, + metadata: [ + { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 8, + }, + { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 9, + }, + { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 10, + }, + ], + batched: true, + statusCode: 200, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: 'accountId123', + conversionToken: 'conversionToken123', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + }, + }, + }, + }, + { + destType: 'pinterest_tag', + description: 'Test 0', + feature: 'router', + module: 'destination', + version: 'v0', + input: { + request: { + body: { + input: [ + { + message: { + type: 'Identify', + event: 'User Signup', + 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', + 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, + }, + }, + metadata: { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 5, + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + destType: 'pinterest_tag', + }, + method: 'POST', + }, + }, + output: { + response: { + status: 200, + body: { + output: [ + { + metadata: [ + { + destintionId: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + jobId: 5, + }, + ], + batched: false, + statusCode: 400, + error: 'message type identify is not supported', + statTags: { + destType: 'PINTEREST_TAG', + implementation: 'cdkV2', + feature: 'router', + module: 'destination', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + }, + destination: { + DestinationDefinition: { Config: { cdkV2Enabled: true } }, + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [ + { + 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', + }, + ], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + }, + }, + }, + }, +]; diff --git a/test/integrations/destinations/pinterest_tag/step/data.ts b/test/integrations/destinations/pinterest_tag/step/data.ts new file mode 100644 index 0000000000..b5d6f5186f --- /dev/null +++ b/test/integrations/destinations/pinterest_tag/step/data.ts @@ -0,0 +1,3358 @@ +export const data = [ + { + name: 'pinterest_tag', + description: 'Test 0', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + gender: 'non-binary', + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'watch_video', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + ge: ['1b16b1df538ba12dc3f97edbb85caa7050d46c148134290feba80f8236c83db9'], + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 1', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Order completed', + 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', + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'checkout', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 2', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'product added', + 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: { + product_id: '123', + 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', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'add_to_cart', + action_source: 'web', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 2, + content_ids: ['123'], + contents: [{ quantity: 2, item_price: '25' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 3', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Product List Filtered', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Advertiser Id not found. Aborting', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 4', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'Product List Filtered', + sentAt: '2020-08-14T05:30:30.118Z', + channel: 'web', + context: { + source: 'test', + userAgent: 'chrome', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: '+1234589947', + ge: 'male', + db: '19950715', + lastname: 'Rudderlabs', + firstName: 'Test', + address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' }, + }, + 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', + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + 'It is required at least one of em, hashed_maids or pair of client_ip_address and client_user_agent', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 5', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + numOfItems: 2, + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '429047995', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'watch_video', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + num_items: 2, + order_id: '50314b8e9bcf000000000000', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 6', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + 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', + numOfItems: 2, + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Advertiser Id not found. Aborting', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 7', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'group', + event: 'ABC Searched', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + enhancedMatch: true, + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'message type group is not supported', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 8', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'ABC Searched', + channel: 'abc', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Action source must be one of app_android, app_ios, web, offline', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'instrumentation', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 9', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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', + numOfItems: 2, + 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: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + action_source: 'web', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + num_items: 2, + order_id: '50314b8e9bcf000000000000', + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 10', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'page_visit', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 11', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 12', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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', adTrackingEnabled: true }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + opt_out: false, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 13', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + ip: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: '+1234589947', + ge: 'male', + db: '19950715', + lastname: 'Rudderlabs', + firstName: 'Test', + address: { city: 'Kolkata', state: 'WB', zip: '700114', country: 'IN' }, + }, + device: { adTrackingEnabled: false }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + opt_out: true, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + action_source: 'web', + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + client_ip_address: '127.0.0.0', + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 14', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + requestIP: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: 'Hashed phone', + gender: 'Hashed Gender', + dob: 'Hashed DB', + lastname: 'Hashed Lastname', + firstName: 'Hashed FirstName', + address: { + city: 'Hashed City', + state: 'Hashed State', + zip: 'Hashed Zip', + country: 'Hashed country', + }, + }, + device: { adTrackingEnabled: false, advertisingId: 'Hashed maids' }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: false, + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + action_source: 'web', + opt_out: true, + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + user_data: { + ph: ['Hashed phone'], + db: ['Hashed DB'], + ln: ['Hashed Lastname'], + fn: ['Hashed FirstName'], + ct: ['Hashed City'], + st: ['Hashed State'], + zp: ['Hashed Zip'], + country: ['Hashed country'], + hashed_maids: ['Hashed maids'], + ge: ['Hashed Gender'], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 15', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'page', + name: 'ApplicationLoaded', + category: 'test category', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + context: { + source: 'test', + userAgent: 'chrome', + requestIP: '127.0.0.0', + traits: { + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + phone: ['Hashed phone', 'Hashed phone1'], + gender: ['Hashed Gender', 'Hashed Gender1'], + dob: ['Hashed DB', 'Hashed DB1'], + lastname: ['Hashed Lastname', 'Hashed Lastname1'], + firstName: ['Hashed FirstName', 'Hashed FirstName1'], + address: { + city: ['Hashed City', 'Hashed City1'], + state: ['Hashed State', 'Hashed State1'], + zip: ['Hashed Zip', 'Hashed Zip1'], + country: ['Hashed country', 'Hashed country1'], + }, + }, + device: { adTrackingEnabled: false, advertisingId: 'Hashed maids' }, + library: { name: 'rudder-sdk-ruby-sync', version: '1.0.6' }, + }, + messageId: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + timestamp: '2020-08-14T05:30:30.118Z', + properties: { path: '', referrer: '', search: '', title: '', url: '' }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: false, + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_time: 1597383030, + action_source: 'web', + opt_out: true, + event_name: 'view_category', + app_id: '429047995', + advertiser_id: '123456', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + user_data: { + ph: ['Hashed phone', 'Hashed phone1'], + db: ['Hashed DB', 'Hashed DB1'], + ln: ['Hashed Lastname', 'Hashed Lastname1'], + fn: ['Hashed FirstName', 'Hashed FirstName1'], + ct: ['Hashed City', 'Hashed City1'], + st: ['Hashed State', 'Hashed State1'], + zp: ['Hashed Zip', 'Hashed Zip1'], + country: ['Hashed country', 'Hashed country1'], + hashed_maids: ['Hashed maids'], + ge: ['Hashed Gender', 'Hashed Gender1'], + client_user_agent: 'chrome', + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 16', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + name: 'Test Tool', + type: 'page', + sentAt: '2023-02-01T00:00:00.379Z', + userId: '', + channel: 'web', + context: { + os: { name: '', version: '' }, + app: { + name: 'RudderLabs JavaScript SDK', + version: '2.22.3', + namespace: 'com.rudderlabs.javascript', + }, + page: { + url: 'https://www.abc.com/s598907', + path: '/test-path/s598907', + title: 'Test Tool + Reviews | Rudderstack', + search: '', + tab_url: 'https://www.abc.com/s598907', + referrer: '$direct', + initial_referrer: '$direct', + referring_domain: '', + initial_referring_domain: '', + }, + locale: 'en-US', + screen: { + width: 1024, + height: 1024, + density: 1, + innerWidth: 1024, + innerHeight: 1024, + }, + traits: {}, + library: { name: 'RudderLabs JavaScript SDK', version: '2.22.3' }, + campaign: {}, + doNotSell: false, + sessionId: 1675209600203, + userAgent: + 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/109.0.5414.101 Safari/537.36', + gaClientId: { + integrations: { + 'Google Ads': { gclid: '' }, + 'Google Analytics': { clientId: '1518934611.1234569600' }, + }, + }, + sessionStart: true, + }, + rudderId: '7291a10f-e7dd-49f9-94ce-0154f53897y6', + messageId: '1c77a616-13a7-4a2e-a8e7-e1a0971897y6', + timestamp: '2023-02-01T12:47:30.030Z', + properties: { + sku: '45790-32', + url: 'https://www.abc.com/23rty', + name: 'Test Tool', + path: '/test-path/tool', + email: '', + title: 'Test Tool + Reviews | Rudderstack', + review: { reviewCount: 2, averageReview: 5, reviewContentID: ['238300132'] }, + search: '', + tab_url: 'https://www.abc/com', + pageInfo: { + pageId: 's592897', + category: { + pageType: 'product', + subCategory: 'Dining & Kitchen Furniture', + pageTemplate: 'product detail grouper', + primaryCategory: 'Furniture', + }, + brandType: 'new brand', + }, + referrer: '', + subCategory: 'Dining & Kitchen Furniture', + primaryCategory: 'Furniture', + initial_referrer: '$direct', + referring_domain: '', + initial_referring_domain: '', + }, + receivedAt: '2023-02-01T12:47:30.038Z', + request_ip: '66.249.72.218', + anonymousId: 'a61c77a6-1613-474a-aee8-e7e1a0971047', + integrations: { All: true }, + originalTimestamp: '2023-02-01T00:00:00.371Z', + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123478671210', + sendingUnHashedData: false, + enableDeduplication: false, + eventsMapping: [ + { from: 'Product Added', to: 'AddToCart' }, + { from: 'Order Completed', to: 'Checkout' }, + { from: 'Product Viewed', to: 'PageVisit' }, + { from: 'Lead', to: 'Lead' }, + { from: 'Signup', to: 'Signup' }, + ], + enhancedMatch: true, + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + body: { + JSON: { + event_time: 1675255650, + event_source_url: 'https://www.abc.com/s598907', + action_source: 'web', + app_name: 'RudderLabs JavaScript SDK', + app_version: '2.22.3', + language: 'en-US', + event_id: '1c77a616-13a7-4a2e-a8e7-e1a0971897y6', + advertiser_id: '123478671210', + user_data: { + client_ip_address: '66.249.72.218', + client_user_agent: + 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/109.0.5414.101 Safari/537.36', + }, + event_name: 'page_visit', + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 17', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'test', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { + sku: '1234', + tax: 2, + total: 27.5, + coupon: 'hasbros', + revenue: 48, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 0, + content_ids: ['1234'], + contents: [{ quantity: 1, item_price: 'undefined' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 18', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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: { + sku: '1234', + tax: 2, + total: 27.5, + coupon: 'hasbros', + revenue: 48, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + 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', + }, + ], + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://ct.pinterest.com/events/v3', + headers: { 'Content-Type': 'application/json' }, + params: {}, + body: { + JSON: { + event_name: 'custom', + event_time: 1597383030, + action_source: 'web', + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + advertiser_id: '123456', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + num_items: 1, + content_ids: ['507f1f77bcf86cd799439011'], + contents: [{ quantity: 1, item_price: '19' }], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 19', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + advertiserId: '123456', + appId: '429047995', + sendingUnHashedData: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + enhancedMatch: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + body: { + FORM: {}, + JSON: { + action_source: 'web', + advertiser_id: '123456', + app_id: '429047995', + custom_data: { + contents: [{ item_price: 'undefined', quantity: 1 }], + currency: 'USD', + num_items: 0, + order_id: '50314b8e9bcf000000000000', + value: '27.5', + }, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + event_name: 'custom event', + event_time: 1597383030, + user_data: { + client_user_agent: 'chrome', + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + }, + }, + JSON_ARRAY: {}, + XML: {}, + }, + endpoint: 'https://ct.pinterest.com/events/v3', + files: {}, + headers: { 'Content-Type': 'application/json' }, + method: 'POST', + params: {}, + type: 'REST', + version: '1', + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 20', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Track call with v5 Api version and send external_id toggle enabled', + message: { + type: 'track', + event: 'ABC Searched', + 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: { + 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: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'watch_video', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + external_id: [ + '3217d71a74c219d6e31e28267b313a7ceb6a2c032db1a091c9416b25b2ae2bc8', + ], + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 21', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Custom event with v5 Api version', + message: { + type: 'track', + event: 'random', + 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: { + 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, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: ['48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08'], + ph: ['d164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b'], + ln: ['dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251'], + fn: ['9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'], + ct: ['6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85'], + st: ['3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd'], + zp: ['1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c'], + country: ['582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf'], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 22', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: + 'Custom event with v5 Api version, with unhashed User Data and the values are an array of strings', + message: { + type: 'track', + event: 'random', + 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', 'def@gmail.com'], + phone: ['+1234589947', '+1234589948'], + ge: ['male', 'male'], + db: ['19950715', '19970615'], + lastname: ['Rudderlabs', 'Xu'], + firstName: ['Test', 'Alex'], + address: { + city: ['Kolkata', 'Mumbai'], + state: ['WB', 'MH'], + zip: ['700114', '700115'], + country: ['IN', '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: { + 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, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + output: { + version: '1', + type: 'REST', + method: 'POST', + endpoint: 'https://api.pinterest.com/v5/ad_accounts/accountId123/events', + headers: { + 'Content-Type': 'application/json', + Authorization: 'Bearer conversionToken123', + }, + params: {}, + body: { + JSON: { + action_source: 'web', + event_name: 'custom', + event_time: 1597383030, + event_id: '7208bbb6-2c4e-45bb-bf5b-ad426f3593e9', + app_id: '429047995', + user_data: { + em: [ + '48ddb93f0b30c475423fe177832912c5bcdce3cc72872f8051627967ef278e08', + 'c392e50ebeca7bea4405e9c545023451ac56620031f81263f681269bde14218b', + ], + ph: [ + 'd164bbe036663cb5c96835e9ccc6501e9a521127ea62f6359744928ba932413b', + '22bdde2594851294f2a6f4c34af704e68b398b03129ea9ceb58f0ffe33f6db52', + ], + ln: [ + 'dcf000c2386fb76d22cefc0d118a8511bb75999019cd373df52044bccd1bd251', + '9c2f138690fca4890c3c4a6691610fbbbdf32091cc001f7355cfdf574baa52b9', + ], + fn: [ + '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', + '4135aa9dc1b842a653dea846903ddb95bfb8c5a10c504a7fa16e10bc31d1fdf0', + ], + ct: [ + '6689106ca7922c30b2fd2c175c85bc7fc2d52cc4941bdd7bb622c6cdc6284a85', + 'd209bcc17778fd19fd2bc0c99a3868bf011da5162d3a75037a605768ebc276e2', + ], + st: [ + '3b45022ab36728cdae12e709e945bba267c50ee8a91e6e4388539a8e03a3fdcd', + '1b0316ed1cfed044035c55363e02ccafab26d66b1c2746b94d17285f043324aa', + ], + zp: [ + '1a4292e00780e18d00e76fde9850aee5344e939ba593333cd5e4b4aa2cd33b0c', + '4d6755aa1e85517191f06cc91448696c173e1195ae51f94a1670116ac7b5c47b', + ], + country: [ + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + '582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf', + ], + hashed_maids: [ + '6ca13d52ca70c883e0f0bb101e425a89e8624de51db2d2392593af6a84118090', + ], + client_user_agent: 'chrome', + }, + custom_data: { + currency: 'USD', + value: '27.5', + order_id: '50314b8e9bcf000000000000', + opt_out_type: 'LDP', + num_items: 3, + content_ids: ['507f1f77bcf86cd799439011', '505bd76785ebb509fc183733'], + contents: [ + { quantity: 1, item_price: '19' }, + { quantity: 2, item_price: '3' }, + ], + }, + }, + JSON_ARRAY: {}, + XML: {}, + FORM: {}, + }, + files: {}, + userId: '', + }, + statusCode: 200, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 23', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Ad Account Id check in V5', + message: { + type: 'track', + event: 'random', + 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', + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: '', + conversionToken: 'conversionToken123', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Ad Account ID not found. Aborting', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 24', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + description: 'Conversion Token check in V5', + message: { + type: 'track', + event: 'random', + 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', + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + ID: '1pYpzzvcn7AQ2W9GGIAZSsN6Mfq', + Name: 'PINTEREST_TAG', + Config: { + sendAsTestEvent: false, + tagId: '123456789', + apiVersion: 'newApi', + adAccountId: 'accountId123', + conversionToken: '', + appId: '429047995', + enhancedMatch: true, + enableDeduplication: true, + deduplicationKey: 'messageId', + sendingUnHashedData: true, + sendAsCustomEvent: true, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: 'Conversion Token not found. Aborting', + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, + { + name: 'pinterest_tag', + description: 'Test 25', + feature: 'processor', + module: 'destination', + version: 'v0', + input: { + request: { + body: [ + { + message: { + type: 'track', + event: 'custom event', + channel: 'web', + sentAt: '2020-08-14T05:30:30.118Z', + 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, + currency: 'USD', + discount: 2.5, + order_id: '50314b8e9bcf000000000000', + requestIP: '123.0.0.0', + shipping: 3, + subtotal: 22.5, + affiliation: 'Google Store', + checkout_id: 'fksdjfsdjfisjf9sdfjsd9f', + }, + anonymousId: '50be5c78-6c3f-4b60-be84-97805a316fb1', + integrations: { All: true }, + }, + destination: { + 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, + sendAsCustomEvent: false, + customProperties: [{ properties: 'presentclass' }, { properties: 'presentgrade' }], + eventsMapping: [{ from: 'ABC Searched', to: 'WatchVideo' }], + }, + Enabled: true, + Transformations: [], + }, + }, + ], + method: 'POST', + }, + pathSuffix: '', + }, + output: { + response: { + status: 200, + body: [ + { + error: + "custom event is not mapped in UI. Make sure to map the event in UI or enable the 'send as custom event' setting", + statTags: { + destType: 'PINTEREST_TAG', + errorCategory: 'dataValidation', + errorType: 'configuration', + feature: 'processor', + implementation: 'native', + module: 'destination', + }, + statusCode: 400, + }, + ], + }, + }, + }, +];