{"action":"created","comment":{"url":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments/230919365","pull_request_review_id":171768770,"id":230919365,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzMDkxOTM2NQ==","diff_hunk":"@@ -0,0 +1,343 @@\n+import * as utils from 'src/utils';\n+import { Renderer } from 'src/Renderer';\n+import { registerBidder } from 'src/adapters/bidderFactory';\n+import { BANNER, VIDEO } from 'src/mediaTypes';\n+\n+const BIDDER_CODE = 'spotx';\n+const URL = '//search.spotxchange.com/openrtb/2.3/dados/';\n+const ORTB_VERSION = '2.3';\n+\n+export const spec = {\n+  code: BIDDER_CODE,\n+  aliases: ['spotx'],\n+  supportedMediaTypes: [BANNER, VIDEO],\n+\n+  /**\n+   * Determines whether or not the given bid request is valid.\n+   * From Prebid.js: isBidRequestValid - Verify the the AdUnits.bids, respond with true (valid) or false (invalid).\n+   *\n+   * @param {object} bid The bid to validate.\n+   * @return boolean True if this is a valid bid, and false otherwise.\n+   */\n+  isBidRequestValid: function(bid) {\n+    if (bid && (typeof bid.params !== 'object' || typeof bid.params.video !== 'object')) {\n+      utils.logMessage(BIDDER_CODE + ': video params is missing or is incorrect');\n+      return false;\n+    }\n+\n+    if (bid.params.video.channel_id === undefined || bid.params.video.slot === undefined || bid.params.video.video_slot === undefined) {\n+      utils.logMessage(BIDDER_CODE + ': channel_id, slot and/or video_slot are not present in bidder params');\n+      return false;\n+    }\n+\n+    const videoSlotDivId = utils.getBidIdParameter('video_slot', bid.params.video);\n+    if (window.document.getElementById(videoSlotDivId) === null) {\n+      utils.logMessage(BIDDER_CODE + ': video_slot HTML node id does not exist on the page');\n+      return false;\n+    }\n+\n+    const slotDivId = utils.getBidIdParameter('slot', bid.params.video);\n+    if (window.document.getElementById(slotDivId) === null) {\n+      utils.logMessage(BIDDER_CODE + ': slot HTML node id does not exist on the page');\n+      return false;\n+    }\n+\n+    return true;\n+  },\n+\n+  /**\n+   * Make a server request from the list of BidRequests.\n+   * from Prebid.js: buildRequests - Takes an array of valid bid requests, all of which are guaranteed to have passed the isBidRequestValid() test.\n+   *\n+   * @param {BidRequest[]} bidRequests A non-empty list of bid requests which should be sent to the Server.\n+   * @return ServerRequest Info describing the request to the server.\n+   */\n+  buildRequests: function(bidRequests, bidderRequest) {\n+    const loc = utils.getTopWindowLocation();\n+    const page = loc.href;\n+    const isPageSecure = (loc.protocol === 'https:') ? 1 : 0;\n+\n+    const siteId = '';\n+    const bid = bidderRequest.bids[0];\n+    const channelId = bid.params.video.channel_id;\n+    let pubcid = null;\n+\n+    const videoSlotDiv = window.document.getElementById(utils.getBidIdParameter('video_slot', bid.params.video));\n+    const hasVideoElement = videoSlotDiv.querySelectorAll('video').length;\n+    const contentWidth = utils.getBidIdParameter('content_width', bid.params.video) ||\n+      (hasVideoElement\n+        ? videoSlotDiv.querySelectorAll('video')[0].offsetWidth\n+        : videoSlotDiv.offsetWidth);\n+    const contentHeight = utils.getBidIdParameter('content_height', bid.params.video) ||\n+      (hasVideoElement\n+        ? videoSlotDiv.querySelectorAll('video')[0].offsetHeight\n+        : videoSlotDiv.offsetHeight);\n+\n+    const spotxImps = bidRequests.map(function(bid) {\n+      const secure = isPageSecure || (utils.getBidIdParameter('secure', bid.params) ? 1 : 0);\n+\n+      const ext = {\n+        player_width: contentWidth,\n+        player_height: contentHeight,\n+        sdk_name: 'Prebid 1+',\n+        ad_mute: !!utils.getBidIdParameter('ad_mute', bid.params.video),\n+        hide_skin: !!utils.getBidIdParameter('hide_skin', bid.params.video),\n+        content_page_url: page,\n+        versionOrtb: ORTB_VERSION,\n+        bidId: bid.bidId,\n+        videoSlot: bid.params.video.video_slot\n+      };\n+\n+      if (utils.getBidIdParameter('ad_volume', bid.params.video) != '') {\n+        ext.ad_volume = utils.getBidIdParameter('ad_volume', bid.params.video);\n+      }\n+\n+      if (utils.getBidIdParameter('ad_unit', bid.params.video) != '') {\n+        ext.ad_unit = utils.getBidIdParameter('ad_unit', bid.params.video);\n+      }\n+\n+      if (utils.getBidIdParameter('outstreamFunction', bid.params.video) != '') {\n+        ext.outstreamFunction = utils.getBidIdParameter('outstreamFunction', bid.params.video);\n+      }\n+\n+      if (utils.getBidIdParameter('custom', bid.params.video) != '') {\n+        ext.custom = utils.getBidIdParameter('custom', bid.params.video);\n+      }\n+\n+      const mimes = utils.getBidIdParameter('mimes', bid.params.video) || ['application/javascript', 'video/mp4', 'video/webm'];\n+\n+      const spotxImp = {\n+        id: Date.now(),\n+        secure: secure,\n+        video: {\n+          w: contentWidth,\n+          h: contentHeight,\n+          ext: ext,\n+          mimes: mimes\n+        }\n+      };\n+\n+      if (utils.getBidIdParameter('price_floor', bid.params) != '') {\n+        spotxImp.bidfloor = utils.getBidIdParameter('price_floor', bid.params);\n+      }\n+\n+      if (utils.getBidIdParameter('start_delay', bid.params.video) != '') {\n+        spotxImp.video.startdelay = 0 + Boolean(utils.getBidIdParameter('start_delay', bid.params.video));\n+      }\n+\n+      if (bid.crumbs && bid.crumbs.pubcid) {\n+        pubcid = bid.crumbs.pubcid;\n+      }\n+\n+      return spotxImp;\n+    });\n+\n+    const language = navigator.language ? 'language' : 'userLanguage';\n+    const device = {\n+      h: screen.height,\n+      w: screen.width,\n+      dnt: utils.getDNT() ? 1 : 0,\n+      language: navigator[language].split('-')[0],\n+      make: navigator.vendor ? navigator.vendor : '',\n+      ua: navigator.userAgent\n+    };\n+\n+    let requestPayload = {\n+      id: channelId,\n+      imp: spotxImps,\n+      site: {\n+        id: siteId,\n+        page: page,\n+        content: 'content',\n+      },\n+      device: device,\n+      ext: {\n+        wrap_response: 1\n+      }\n+    };\n+\n+    if (utils.getBidIdParameter('number_of_ads', bid.params)) {\n+      requestPayload['ext']['number_of_ads'] = utils.getBidIdParameter('number_of_ads', bid.params);\n+    }\n+\n+    let userExt = {};\n+\n+    // Add GDPR flag and consent string\n+    if (bidderRequest && bidderRequest.gdprConsent) {\n+      userExt.consent = bidderRequest.gdprConsent.consentString;\n+\n+      if (typeof bidderRequest.gdprConsent.gdprApplies !== 'undefined') {\n+        requestPayload.regs = {\n+          ext: {\n+            gdpr: (bidderRequest.gdprConsent.gdprApplies ? 1 : 0)\n+          }\n+        };\n+      }\n+    }\n+\n+    // Add common id if available\n+    if (pubcid) {\n+      userExt.fpc = pubcid;\n+    }\n+\n+    // Only add the user object if it's not empty\n+    if (!utils.isEmpty(userExt)) {\n+      requestPayload.user = { ext: userExt };\n+    }\n+\n+    return {\n+      method: 'POST',\n+      url: URL + channelId,\n+      data: requestPayload,\n+      bidRequest: bidderRequest\n+    };\n+  },\n+\n+  /**\n+   * Unpack the response from the server into a list of bids.\n+   *\n+   * @param {*} serverResponse A successful response from the server.\n+   * @return {Bid[]} An array of bids which were nested inside the server.\n+   */\n+  interpretResponse: function(serverResponse, bidderRequest) {\n+    const bidResponses = [];\n+    const serverResponseBody = serverResponse.body;\n+\n+    const requestMap = {};\n+    if (bidderRequest && bidderRequest.data && bidderRequest.data.imp) {\n+      utils._each(bidderRequest.data.imp, imp => requestMap[imp.id] = imp);\n+    }\n+\n+    if (serverResponseBody && utils.isArray(serverResponseBody.seatbid)) {\n+      utils._each(serverResponseBody.seatbid, function(bids) {\n+        utils._each(bids.bid, function(spotxBid) {\n+          const request = requestMap[spotxBid.impid];\n+\n+          const bid = {\n+            requestId: request.video.ext.bidId,\n+            currency: serverResponseBody.cur || 'USD',\n+            cpm: spotxBid.price,\n+            creativeId: spotxBid.crid || '',\n+            ttl: 360,\n+            netRevenue: true,\n+            channel_id: serverResponseBody.id,\n+            cache_key: spotxBid.ext.cache_key,\n+            video_slot: request.video.ext.videoSlot\n+          };\n+\n+          if (request.video) {\n+            bid.vastUrl = '//search.spotxchange.com/ad/vast.html?key=' + spotxBid.ext.cache_key;\n+            bid.mediaType = VIDEO;\n+            bid.width = spotxBid.w;\n+            bid.height = spotxBid.h;\n+          }\n+\n+          if (request.video.ext.ad_unit == 'outstream') {\n+            const renderer = Renderer.install({\n+              id: 0,\n+              url: '//',\n+              config: {\n+                adText: 'SpotX Outstream Video Ad via Prebid.js',\n+                player_width: request.video.ext.player_width,\n+                player_height: request.video.ext.player_height,\n+                content_page_url: request.video.ext.content_page_url,\n+                ad_mute: request.video.ext.ad_mute,\n+                outstreamFunction: request.video.ext.outstreamFunction\n+              }\n+            });\n+\n+            try {\n+              renderer.setRender(outstreamRender);\n+              renderer.setEventHandlers({\n+                impression: function impression() {\n+                  return utils.logMessage('SpotX outstream video impression event');\n+                },\n+                loaded: function loaded() {\n+                  return utils.logMessage('SpotX outstream video loaded event');\n+                },\n+                ended: function ended() {\n+                  utils.logMessage('SpotX outstream renderer video event');\n+                }\n+              });\n+            } catch (err) {\n+              utils.logWarn('Prebid Error calling setRender or setEve,tHandlers on renderer', err);\n+            }\n+            bid.renderer = renderer;\n+          }\n+\n+          bidResponses.push(bid);\n+        })\n+      });\n+    }\n+\n+    // Make sure hb_adid will be correct\n+    if (bidderRequest && bidderRequest.bidRequest && bidderRequest.bidRequest.bids) {\n+      utils._each(bidderRequest.bidRequest.bids, function(spotxBid) {\n+        let adId = null;\n+        for (let i = 0; i < bidResponses.length; i++) {\n+          if (bidResponses[i].requestId == spotxBid.bidId) {\n+            adId = bidResponses[i].cache_key;\n+          }\n+        };\n+        if (adId != null) {\n+          spotxBid.bidId = adId;\n+        }\n+      });\n+    }\n+\n+    return bidResponses;\n+  },\n+\n+  /**\n+   * If the publisher allows user-sync activity, the platform will call this function and the adapter may register pixels and/or iframe user syncs.\n+   *\n+   */\n+  getUserSyncs: function(syncOptions, serverResponses) {},\n+\n+  /**\n+   * If the adapter timed out for an auction, the platform will call this function and the adapter may register timeout.\n+   *\n+   */\n+  onTimeout: function(timeoutData) {}","path":"modules/spotxBidAdapter.js","position":null,"original_position":301,"commit_id":"8100ae9c8c17514a2a08aff59e013dd664f7e1a7","original_commit_id":"3239f1c322689243f50ba8d633c048bf76533555","user":{"login":"strider820","id":996869,"node_id":"MDQ6VXNlcjk5Njg2OQ==","avatar_url":"https://avatars2.githubusercontent.com/u/996869?v=4","gravatar_id":"","url":"https://api.github.com/users/strider820","html_url":"https://github.com/strider820","followers_url":"https://api.github.com/users/strider820/followers","following_url":"https://api.github.com/users/strider820/following{/other_user}","gists_url":"https://api.github.com/users/strider820/gists{/gist_id}","starred_url":"https://api.github.com/users/strider820/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/strider820/subscriptions","organizations_url":"https://api.github.com/users/strider820/orgs","repos_url":"https://api.github.com/users/strider820/repos","events_url":"https://api.github.com/users/strider820/events{/privacy}","received_events_url":"https://api.github.com/users/strider820/received_events","type":"User","site_admin":false},"body":"removed","created_at":"2018-11-05T21:29:52Z","updated_at":"2018-11-05T21:29:52Z","html_url":"https://github.com/prebid/Prebid.js/pull/3247#discussion_r230919365","pull_request_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments/230919365"},"html":{"href":"https://github.com/prebid/Prebid.js/pull/3247#discussion_r230919365"},"pull_request":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247"}},"in_reply_to_id":230385527},"pull_request":{"url":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247","id":227342951,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI3MzQyOTUx","html_url":"https://github.com/prebid/Prebid.js/pull/3247","diff_url":"https://github.com/prebid/Prebid.js/pull/3247.diff","patch_url":"https://github.com/prebid/Prebid.js/pull/3247.patch","issue_url":"https://api.github.com/repos/prebid/Prebid.js/issues/3247","number":3247,"state":"open","locked":false,"title":"Add a SpotX bidder adapter","user":{"login":"strider820","id":996869,"node_id":"MDQ6VXNlcjk5Njg2OQ==","avatar_url":"https://avatars2.githubusercontent.com/u/996869?v=4","gravatar_id":"","url":"https://api.github.com/users/strider820","html_url":"https://github.com/strider820","followers_url":"https://api.github.com/users/strider820/followers","following_url":"https://api.github.com/users/strider820/following{/other_user}","gists_url":"https://api.github.com/users/strider820/gists{/gist_id}","starred_url":"https://api.github.com/users/strider820/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/strider820/subscriptions","organizations_url":"https://api.github.com/users/strider820/orgs","repos_url":"https://api.github.com/users/strider820/repos","events_url":"https://api.github.com/users/strider820/events{/privacy}","received_events_url":"https://api.github.com/users/strider820/received_events","type":"User","site_admin":false},"body":"## Type of change\r\n- [ ] Bugfix\r\n- [ ] Feature\r\n- [x] New bidder adapter  <!--  IMPORTANT: if checking here, also submit your bidder params documentation here https://github.com/prebid/prebid.github.io/tree/master/dev-docs/bidders --> \r\n- [ ] Code style update (formatting, local variables)\r\n- [ ] Refactoring (no functional changes, no api changes)\r\n- [ ] Build related changes\r\n- [ ] CI related changes\r\n- [ ] Does this change affect user-facing APIs or examples documented on http://prebid.org?\r\n- [ ] Other\r\n\r\n## Description of change\r\nAdd a SpotX bidder adapter\r\n\r\n- test parameters for validating bids\r\n```\r\n{\r\n                bidder: 'spotx',\r\n                params: {\r\n                    placementId: \"123456789\",\r\n                    video: {\r\n                        channel_id: 79391,\r\n                        video_slot: 'video1',\r\n                        slot: 'video1',\r\n                        ad_unit: 'outstream'\r\n                    }\r\n                }\r\n            }\r\n```\r\n\r\n- teameighties@spotx.tv\r\n- [x] official adapter submission\r\n","created_at":"2018-10-31T15:54:31Z","updated_at":"2018-11-05T21:29:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8961b3c4e8c2f9a84f39b40fb0d6c06205fb06f8","assignee":{"login":"jaiminpanchal27","id":7393273,"node_id":"MDQ6VXNlcjczOTMyNzM=","avatar_url":"https://avatars2.githubusercontent.com/u/7393273?v=4","gravatar_id":"","url":"https://api.github.com/users/jaiminpanchal27","html_url":"https://github.com/jaiminpanchal27","followers_url":"https://api.github.com/users/jaiminpanchal27/followers","following_url":"https://api.github.com/users/jaiminpanchal27/following{/other_user}","gists_url":"https://api.github.com/users/jaiminpanchal27/gists{/gist_id}","starred_url":"https://api.github.com/users/jaiminpanchal27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaiminpanchal27/subscriptions","organizations_url":"https://api.github.com/users/jaiminpanchal27/orgs","repos_url":"https://api.github.com/users/jaiminpanchal27/repos","events_url":"https://api.github.com/users/jaiminpanchal27/events{/privacy}","received_events_url":"https://api.github.com/users/jaiminpanchal27/received_events","type":"User","site_admin":false},"assignees":[{"login":"jaiminpanchal27","id":7393273,"node_id":"MDQ6VXNlcjczOTMyNzM=","avatar_url":"https://avatars2.githubusercontent.com/u/7393273?v=4","gravatar_id":"","url":"https://api.github.com/users/jaiminpanchal27","html_url":"https://github.com/jaiminpanchal27","followers_url":"https://api.github.com/users/jaiminpanchal27/followers","following_url":"https://api.github.com/users/jaiminpanchal27/following{/other_user}","gists_url":"https://api.github.com/users/jaiminpanchal27/gists{/gist_id}","starred_url":"https://api.github.com/users/jaiminpanchal27/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaiminpanchal27/subscriptions","organizations_url":"https://api.github.com/users/jaiminpanchal27/orgs","repos_url":"https://api.github.com/users/jaiminpanchal27/repos","events_url":"https://api.github.com/users/jaiminpanchal27/events{/privacy}","received_events_url":"https://api.github.com/users/jaiminpanchal27/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":778096712,"node_id":"MDU6TGFiZWw3NzgwOTY3MTI=","url":"https://api.github.com/repos/prebid/Prebid.js/labels/needs%20docs","name":"needs docs","color":"f3f704","default":false},{"id":1025437944,"node_id":"MDU6TGFiZWwxMDI1NDM3OTQ0","url":"https://api.github.com/repos/prebid/Prebid.js/labels/needs%20unit%20tests","name":"needs unit tests","color":"dd8c63","default":false},{"id":330242408,"node_id":"MDU6TGFiZWwzMzAyNDI0MDg=","url":"https://api.github.com/repos/prebid/Prebid.js/labels/needs%20update","name":"needs update","color":"5319e7","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247/commits","review_comments_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247/comments","review_comment_url":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/prebid/Prebid.js/issues/3247/comments","statuses_url":"https://api.github.com/repos/prebid/Prebid.js/statuses/8100ae9c8c17514a2a08aff59e013dd664f7e1a7","head":{"label":"spotxchange:master","ref":"master","sha":"8100ae9c8c17514a2a08aff59e013dd664f7e1a7","user":{"login":"spotxchange","id":3779692,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3Nzk2OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/3779692?v=4","gravatar_id":"","url":"https://api.github.com/users/spotxchange","html_url":"https://github.com/spotxchange","followers_url":"https://api.github.com/users/spotxchange/followers","following_url":"https://api.github.com/users/spotxchange/following{/other_user}","gists_url":"https://api.github.com/users/spotxchange/gists{/gist_id}","starred_url":"https://api.github.com/users/spotxchange/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spotxchange/subscriptions","organizations_url":"https://api.github.com/users/spotxchange/orgs","repos_url":"https://api.github.com/users/spotxchange/repos","events_url":"https://api.github.com/users/spotxchange/events{/privacy}","received_events_url":"https://api.github.com/users/spotxchange/received_events","type":"Organization","site_admin":false},"repo":{"id":92323417,"node_id":"MDEwOlJlcG9zaXRvcnk5MjMyMzQxNw==","name":"Prebid.js","full_name":"spotxchange/Prebid.js","private":false,"owner":{"login":"spotxchange","id":3779692,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM3Nzk2OTI=","avatar_url":"https://avatars3.githubusercontent.com/u/3779692?v=4","gravatar_id":"","url":"https://api.github.com/users/spotxchange","html_url":"https://github.com/spotxchange","followers_url":"https://api.github.com/users/spotxchange/followers","following_url":"https://api.github.com/users/spotxchange/following{/other_user}","gists_url":"https://api.github.com/users/spotxchange/gists{/gist_id}","starred_url":"https://api.github.com/users/spotxchange/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spotxchange/subscriptions","organizations_url":"https://api.github.com/users/spotxchange/orgs","repos_url":"https://api.github.com/users/spotxchange/repos","events_url":"https://api.github.com/users/spotxchange/events{/privacy}","received_events_url":"https://api.github.com/users/spotxchange/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/spotxchange/Prebid.js","description":"Setup and manage header bidding advertising partners without writing code or confusing line items. Prebid.js is open source and free.","fork":true,"url":"https://api.github.com/repos/spotxchange/Prebid.js","forks_url":"https://api.github.com/repos/spotxchange/Prebid.js/forks","keys_url":"https://api.github.com/repos/spotxchange/Prebid.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spotxchange/Prebid.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spotxchange/Prebid.js/teams","hooks_url":"https://api.github.com/repos/spotxchange/Prebid.js/hooks","issue_events_url":"https://api.github.com/repos/spotxchange/Prebid.js/issues/events{/number}","events_url":"https://api.github.com/repos/spotxchange/Prebid.js/events","assignees_url":"https://api.github.com/repos/spotxchange/Prebid.js/assignees{/user}","branches_url":"https://api.github.com/repos/spotxchange/Prebid.js/branches{/branch}","tags_url":"https://api.github.com/repos/spotxchange/Prebid.js/tags","blobs_url":"https://api.github.com/repos/spotxchange/Prebid.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spotxchange/Prebid.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spotxchange/Prebid.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/spotxchange/Prebid.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spotxchange/Prebid.js/statuses/{sha}","languages_url":"https://api.github.com/repos/spotxchange/Prebid.js/languages","stargazers_url":"https://api.github.com/repos/spotxchange/Prebid.js/stargazers","contributors_url":"https://api.github.com/repos/spotxchange/Prebid.js/contributors","subscribers_url":"https://api.github.com/repos/spotxchange/Prebid.js/subscribers","subscription_url":"https://api.github.com/repos/spotxchange/Prebid.js/subscription","commits_url":"https://api.github.com/repos/spotxchange/Prebid.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/spotxchange/Prebid.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/spotxchange/Prebid.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/spotxchange/Prebid.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/spotxchange/Prebid.js/contents/{+path}","compare_url":"https://api.github.com/repos/spotxchange/Prebid.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spotxchange/Prebid.js/merges","archive_url":"https://api.github.com/repos/spotxchange/Prebid.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spotxchange/Prebid.js/downloads","issues_url":"https://api.github.com/repos/spotxchange/Prebid.js/issues{/number}","pulls_url":"https://api.github.com/repos/spotxchange/Prebid.js/pulls{/number}","milestones_url":"https://api.github.com/repos/spotxchange/Prebid.js/milestones{/number}","notifications_url":"https://api.github.com/repos/spotxchange/Prebid.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spotxchange/Prebid.js/labels{/name}","releases_url":"https://api.github.com/repos/spotxchange/Prebid.js/releases{/id}","deployments_url":"https://api.github.com/repos/spotxchange/Prebid.js/deployments","created_at":"2017-05-24T18:22:20Z","updated_at":"2018-11-05T21:29:14Z","pushed_at":"2018-11-05T21:29:12Z","git_url":"git://github.com/spotxchange/Prebid.js.git","ssh_url":"git@github.com:spotxchange/Prebid.js.git","clone_url":"https://github.com/spotxchange/Prebid.js.git","svn_url":"https://github.com/spotxchange/Prebid.js","homepage":"http://prebid.org","size":7701,"stargazers_count":1,"watchers_count":1,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"prebid:master","ref":"master","sha":"2c5685cb271c364478113546cef471c11499ec06","user":{"login":"prebid","id":13242760,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMjQyNzYw","avatar_url":"https://avatars1.githubusercontent.com/u/13242760?v=4","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"Organization","site_admin":false},"repo":{"id":39321023,"node_id":"MDEwOlJlcG9zaXRvcnkzOTMyMTAyMw==","name":"Prebid.js","full_name":"prebid/Prebid.js","private":false,"owner":{"login":"prebid","id":13242760,"node_id":"MDEyOk9yZ2FuaXphdGlvbjEzMjQyNzYw","avatar_url":"https://avatars1.githubusercontent.com/u/13242760?v=4","gravatar_id":"","url":"https://api.github.com/users/prebid","html_url":"https://github.com/prebid","followers_url":"https://api.github.com/users/prebid/followers","following_url":"https://api.github.com/users/prebid/following{/other_user}","gists_url":"https://api.github.com/users/prebid/gists{/gist_id}","starred_url":"https://api.github.com/users/prebid/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prebid/subscriptions","organizations_url":"https://api.github.com/users/prebid/orgs","repos_url":"https://api.github.com/users/prebid/repos","events_url":"https://api.github.com/users/prebid/events{/privacy}","received_events_url":"https://api.github.com/users/prebid/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/prebid/Prebid.js","description":"Setup and manage header bidding advertising partners without writing code or confusing line items. Prebid.js is open source and free.","fork":false,"url":"https://api.github.com/repos/prebid/Prebid.js","forks_url":"https://api.github.com/repos/prebid/Prebid.js/forks","keys_url":"https://api.github.com/repos/prebid/Prebid.js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prebid/Prebid.js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prebid/Prebid.js/teams","hooks_url":"https://api.github.com/repos/prebid/Prebid.js/hooks","issue_events_url":"https://api.github.com/repos/prebid/Prebid.js/issues/events{/number}","events_url":"https://api.github.com/repos/prebid/Prebid.js/events","assignees_url":"https://api.github.com/repos/prebid/Prebid.js/assignees{/user}","branches_url":"https://api.github.com/repos/prebid/Prebid.js/branches{/branch}","tags_url":"https://api.github.com/repos/prebid/Prebid.js/tags","blobs_url":"https://api.github.com/repos/prebid/Prebid.js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prebid/Prebid.js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prebid/Prebid.js/git/refs{/sha}","trees_url":"https://api.github.com/repos/prebid/Prebid.js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prebid/Prebid.js/statuses/{sha}","languages_url":"https://api.github.com/repos/prebid/Prebid.js/languages","stargazers_url":"https://api.github.com/repos/prebid/Prebid.js/stargazers","contributors_url":"https://api.github.com/repos/prebid/Prebid.js/contributors","subscribers_url":"https://api.github.com/repos/prebid/Prebid.js/subscribers","subscription_url":"https://api.github.com/repos/prebid/Prebid.js/subscription","commits_url":"https://api.github.com/repos/prebid/Prebid.js/commits{/sha}","git_commits_url":"https://api.github.com/repos/prebid/Prebid.js/git/commits{/sha}","comments_url":"https://api.github.com/repos/prebid/Prebid.js/comments{/number}","issue_comment_url":"https://api.github.com/repos/prebid/Prebid.js/issues/comments{/number}","contents_url":"https://api.github.com/repos/prebid/Prebid.js/contents/{+path}","compare_url":"https://api.github.com/repos/prebid/Prebid.js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prebid/Prebid.js/merges","archive_url":"https://api.github.com/repos/prebid/Prebid.js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prebid/Prebid.js/downloads","issues_url":"https://api.github.com/repos/prebid/Prebid.js/issues{/number}","pulls_url":"https://api.github.com/repos/prebid/Prebid.js/pulls{/number}","milestones_url":"https://api.github.com/repos/prebid/Prebid.js/milestones{/number}","notifications_url":"https://api.github.com/repos/prebid/Prebid.js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prebid/Prebid.js/labels{/name}","releases_url":"https://api.github.com/repos/prebid/Prebid.js/releases{/id}","deployments_url":"https://api.github.com/repos/prebid/Prebid.js/deployments","created_at":"2015-07-19T03:26:23Z","updated_at":"2018-11-05T19:11:42Z","pushed_at":"2018-11-05T21:29:14Z","git_url":"git://github.com/prebid/Prebid.js.git","ssh_url":"git@github.com:prebid/Prebid.js.git","clone_url":"https://github.com/prebid/Prebid.js.git","svn_url":"https://github.com/prebid/Prebid.js","homepage":"http://prebid.org","size":8384,"stargazers_count":740,"watchers_count":740,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":809,"mirror_url":null,"archived":false,"open_issues_count":55,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":809,"open_issues":55,"watchers":740,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247"},"html":{"href":"https://github.com/prebid/Prebid.js/pull/3247"},"issue":{"href":"https://api.github.com/repos/prebid/Prebid.js/issues/3247"},"comments":{"href":"https://api.github.com/repos/prebid/Prebid.js/issues/3247/comments"},"review_comments":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247/comments"},"review_comment":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/prebid/Prebid.js/pulls/3247/commits"},"statuses":{"href":"https://api.github.com/repos/prebid/Prebid.js/statuses/8100ae9c8c17514a2a08aff59e013dd664f7e1a7"}},"author_association":"NONE"}}
{"actor":{"display_login":"strider820"}}