{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"5864ebbc-9575-4958-94e6-21a292fb6960","name":"Dailyhunt Content Syndication","description":"<strong>Partner Integration Reference</strong> _Version 2.0_\n\n\n\n<p>Dailyhunt is offering it’s rich catalogue of content via a seamless API integration. This document describes the details on how a partner can integrate with its Content Syndication API. It will help you understand the technical details of how you can integrate with Dailyhunt’s API, expectations from you & the API protocol specification.</p>\n\n___\n# Getting Started\n\n<p>This section describes the technical details of how to invoke Dailyhunt’s Syndication API. It will help you understand how to use the API security, message signing & the API protocol needed for integration.</p>\n\n<br>\n<br>\n<p>During onboarding, Dailyhunt will provision the following items for your integration:</p>\n\n\n<table>\n  <tr>\n   <td><strong>Item</strong>\n   </td>\n   <td><strong>Description</strong>\n   </td>\n  </tr>\n  <tr>\n   <td><em>API Key</em>\n   </td>\n   <td>API access key needed for authentication of the API client\n   </td>\n  </tr>\n  <tr>\n   <td><em>Secret Key</em>\n   </td>\n   <td>Needed for signing the API parameters to generate a signature for API authentication\n   </td>\n  </tr>\n  <tr>\n   <td><em>Partner Code</em>\n   </td>\n   <td>Partner identification code\n   </td>\n  </tr>\n</table>\n\n\n<br>\nYou will need to include the following items in all the API calls:\n\n\n<table>\n  <tr>\n   <td><strong>Item</strong>\n   </td>\n   <td><strong>Description</strong>\n   </td>\n  </tr>\n  <tr>\n   <td><em>Unique Partner user id (puid)</em>\n   </td>\n   <td>Your unique user id accessing Dailyhunt API\n   </td>\n  </tr>\n  <tr>\n   <td><em>API Key</em>\n   </td>\n   <td>API access key needed for authentication of the api user\n   </td>\n  </tr>\n  <tr>\n   <td><em>API Signature</em>\n   </td>\n   <td>The API authentication signature generated using <em>Secret Key</em>\n   </td>\n  </tr>\n  <tr>\n   <td><em>Partner Code</em>\n   </td>\n   <td>Partner identification code\n   </td>\n  </tr>\n  <tr>\n   <td><em>Dailyhunt Cookie (dhFeedV1)</em>\n   </td>\n   <td>Dailyhunt generated cookie (as received from the very first API call) per user\n   </td>\n  </tr>\n</table>\n\n\nThe following section describes in detail, the steps needed for integration, including how to generate some of the above fields & how to include them in the API calls.\n\n\n## API Security\n\nSince the APIs are protected, you will need to generate a message signature using the secret key as described below and pass it along with the API Key to all the API calls.\n\n\n## API Key & Secret Key\n\n\n\n1. Dailyhunt will share the API Key & Secret Key with you through email.\n2. You will pass the API key on every API call.\n3. You will use the Secret Key for signing API requests & generate a _Signature Base String_ that needs to be passed on every API call.\n\n\n\n## How to generate Signature Base String\n\nTo generate a _Signature Base String_, you will need to do the following steps:\n\n\n\n1. Append _ts_=_<current local server time in millis>_ in the url as query parameter.\n2. URL encode the parameter key & value pairs.\n3. Sort all the request query parameters lexicographically, sorted on encoded key.\n4. Append all the _key=value_ with “_&_” as separator if more than one _key=value_ is present.\n5. Uppercase the _http_ method used in the url and in that, append the string from _#d_ above. This new string (encoded sorted parameters + uppercase http method) represents the _Signature Base String._\n\n\n*_For testing out the APIs in Postman, this collection includes a Pre-request Script, which handles the generation of Signature_*\n\n\n\n### API Security Sample Java Code\n\nA sample Java Client Code that uses API Key & Secret Key to generate signature and to invoke Dailyhunt API:\n#### Java Code to generate Signature Base\n\tprivate String generateSignatureBase(String queryString, String method) {\n    StringBuilder signatureBaseBuffer = new StringBuilder();\n    if (!StringUtils.isEmpty(queryString)) {\n      Map<String, String> queryParams = DataUtil.urlRequestParamToMap(queryString);\n      \n      // Sort all the request query parameters lexicographically, sorted on encoded key\n      Map<String, String> encodedAndSortedQueryParams = new TreeMap<>();\n      for (String key : queryParams.keySet()) {\n        encodedAndSortedQueryParams.put(DataUtil.urlEncodedString(key),\n            DataUtil.urlEncodedString(queryParams.get(key)));\n      }\n      \n      // Append all the key=value with “&” as separator if more than one key=value is present\n      signatureBaseBuffer.append(DataUtil.formatAsUrl(encodedAndSortedQueryParams));\n    }\n    // Append the UPPERCASE(http method)\n    signatureBaseBuffer.append(method.toUpperCase());\n    return signatureBaseBuffer.toString();\n    }\n\n#### Java Code to generate the signature using signature base and secret key\n\tprivate String calculateRFC2104HMAC(String data, String key) throws SignatureException {\n    String result;\n    try {\n      // get an hmac_sha1 key from the raw key bytes\n      SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), \"HmacSHA1\");\n      \n      // get an hmac_sha1 Mac instance and initialize with the signing key\n      Mac mac = Mac.getInstance(\"HmacSHA1\");\n      mac.init(signingKey);\n      \n      // compute the hmac on input data bytes\n      byte[] rawHmac = mac.doFinal(data.getBytes());\n      \n      // base64-encode the hmac\n      result = Base64.encodeBase64String(rawHmac);\n    } catch (InvalidKeyException e) {\n      throw new SignatureException(\"Failed to generate HMAC as key is invalid\", e);\n    } catch (NoSuchAlgorithmException e) {\n      throw new SignatureException(\"Failed to generate HMAC as encoding algorithm does not exists\", e);\n    }\n    return result;\n    }\n\n\n## Passing API Key & Signature Request Headers\n\nFollowing steps need to be followed to pass the API Key & Signature headers to Dailyhunt:\n\n1. You will pass the API key in the _Authorization_ header with value as *_key=<API Key>_*.\n2. You will generate a signature (Message Authentication Code - MAC) using the secure message Authentication code algorithm SHA1-HMAC as explained below:\n    a. Generate a signature (S), _S = SHA1-HMAC(Secret Key, Signature Base String)_.\n    b. Base64 encode the signature (S), let's call it _S64_.\n3. While calling the API, include the signature (S) in the header as *_Signature:<value of S64 in 2.b above>_*\n4. If the API key & the signature are correct, Dailyhunt server will allow the API access, otherwise it will return error codes.\n\n\n### References\n\nHMAC\n[https://en.wikipedia.org/wiki/Hash-based_message_authentication_code](https://en.wikipedia.org/wiki/Hash-based_message_authentication_code) \n\nJava HMAC\n[https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/HmacUtils.html](https://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/HmacUtils.html) \n\n[http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AuthJavaSampleHMACSignature.html](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/AuthJavaSampleHMACSignature.html) \n\n## Error Codes\n\nYou will get below error codes for failures:\n\n<table>\n  <tr>\n   <td>401</td> <td>If invalid API key is given in the request header</td>\n   </tr>\n\n\n<tr>\n   <td>403</td> <td>If invalid Signature is given in the request heade</td>\n   </tr>\n<tr>\n<td>500</td> <td>For any unexpected issues at Dailyhunt</td>\n</tr>\n</table>\n\n<br>\n\nExample\n\n\tcurl -H\"Authorization:key=<API Key>\" -H\"Signature:<value of S64>\"\" \"http://<host:port>/api/v2/syndication/channels?partner=xxxx&puid=<your unique user id>&ts=<current server local timestamp>\"\n\n\n## Handling CORS\n\nDailyhunt API can also be integrated directly from the browser. In order to avoid Cross-Origin issue, Dailyhunt supports Cross-Origin Resource Sharing (CORS). Dailyhunt will provide the following headers in the preflight response with OPTIONS http method.\n\n_Access-Control-Allow-Origin:<Your Origin Host>_\n\n_Access-Control-Allow-Credentials: true_\n\nFor more information on CORS, you may refer [https://en.wikipedia.org/wiki/Cross-origin_resource_sharing](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) \n\n# API Integration Environments\n\nFollowing lists the integration environments available:\n\n\n<table>\n  <tr>\n   <td><strong>Environment</strong>\n   </td>\n   <td><strong>Host</strong>\n   </td>\n   <td><strong>Port</strong>\n   </td>\n   <td><strong>Description</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>Stage\n   </td>\n   <td><a href=\"http://qa-news.newshunt.com\">qa-news.newshunt.com</a>\n   </td>\n   <td>80\n   </td>\n   <td>The stage integration environment for development & testing\n   </td>\n  </tr>\n  <tr>\n   <td>Prod\n   </td>\n   <td>feed.dailyhunt.in\n   </td>\n   <td>80\n   </td>\n   <td>The production environment\n   </td>\n  </tr>\n</table>\n\n# Identity Management\n\nA unique user id is needed for every user accessing and consuming Dailyhunt’s content. \nDailyhunt uses the user id to understand the user’s content consumption pattern and to serve personalized content to the user.\n\n\nFollowing sections describe how you can pass a unique user id and the need for a Dailyhunt Cookie which needs to be maintained at your end.\n\n\n### Unique User ID\n\n\n\n1. You will need to provide a unique user id as query parameter in the Dailyhunt API calls. This could be any identifier such as a device identifier, if accessible and available.\n\n>Parameter Name: {{puid}}\n>    \n>Example: http://host:port/{{api_url}}?puid={{Your_unique_user_id}}\n\n\n\n2. Dailyhunt will generate & maintain an internal (Dailyhunt side) user id corresponding to your unique user id.\n\n\n### Dailyhunt Cookie\n\n\n\n1. When you access Dailyhunt API with your Unique User Id (i.e. “_puid_”) in the query parameter, Dailyhunt API will provide a user specific Cookie (_dhFeedV1_) in the API response.\n\n2. You are expected to maintain the _dhFeedV1_ Cookie per user at your end and pass it back on subsequent Dailyhunt API calls. For common browser based integrations, this should happen seamlessly.\n\n3. Dailyhunt will take care of (re-)generating the _dhFeedV1_ Cookie, if found missing in the request or if the Cookie is expired. Dailyhunt will reject the request if _dhFeedV1 _Cookie is found invalid.\n\n4. Dailyhunt Cookie helps avoid repeated lookup of the Dailyhunt internal user id for a given partner user id (_puid_) in every API call.\n\n5. Dailyhunt Cookie will be having a TTL of one month initially (and this may change in future).\n\n___\n\n# Available Language Codes\n\nFollowing table lists the available language codes supported by Dailyhunt’s content feeds. \n\nNote: Some of the channels may not have content for all languages. Please therefore review the feeds for the language of choice prior to rolling out your integration for a chosen language.\n\n\n<table>\n  <tr>\n   <td><strong>Code</strong>\n   </td>\n   <td><strong>Language Name</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>en\n   </td>\n   <td>English\n   </td>\n  </tr>\n  <tr>\n   <td>hi\n   </td>\n   <td>Hindi\n   </td>\n  </tr>\n  <tr>\n   <td>mr\n   </td>\n   <td>Marathi\n   </td>\n  </tr>\n  <tr>\n   <td>gu\n   </td>\n   <td>Gujarati\n   </td>\n  </tr>\n  <tr>\n   <td>pa\n   </td>\n   <td>Punjabi\n   </td>\n  </tr>\n  <tr>\n   <td>bn\n   </td>\n   <td>Bangla\n   </td>\n  </tr>\n  <tr>\n   <td>kn\n   </td>\n   <td>Kannada\n   </td>\n  </tr>\n  <tr>\n   <td>ta\n   </td>\n   <td>Tamil\n   </td>\n  </tr>\n  <tr>\n   <td>te\n   </td>\n   <td>Telugu\n   </td>\n  </tr>\n  <tr>\n   <td>ml\n   </td>\n   <td>Malayalam\n   </td>\n  </tr>\n  <tr>\n   <td>or\n   </td>\n   <td>Oriya\n   </td>\n  </tr>\n  <tr>\n   <td>ur\n   </td>\n   <td>Urdu\n   </td>\n  </tr>\n  <tr>\n   <td>bh\n   </td>\n   <td>Bhojpuri\n   </td>\n  </tr>\n  <tr>\n   <td>ne\n   </td>\n   <td>Nepali\n   </td>\n  </tr>\n</table>\n\n___\n\n\n# Image Resolutions\n\n## Handling Image Url for Different Resolutions/Quality\n\nThe content fetch API provides *_images_* field, having one or more image urls for the story card. The image url will have the following format:\n\n>[http://bcdn.newshunt.com/{CMD}/{W}x{H}_{Q}/(image_folder).{EXT}]\n\nWhere,\n\n*   **_{CMD}_** = one of _“crop”_ or _“resize”_\n*   **_{W}_** = Desired width of the image based on your user’s device dimension\n*   **_{H}_** = Desired height of the image based on your user’s device dimension\n*   **_{Q}_** = Desired image quality in percentage based on user’s network quality, highest possible value is 100 and quality value is directly proportional to the image file size\n*   **_{EXT}_** = Desired image extension such as _webp_, _jpg_, etc.\n\nYou should take care of replacing the above placeholders with appropriate values matching your user’s device & network speed qualifier. Dailyhunt will dynamically generate each image matching your criteria & cache on Dailyhunt’s CDN.\n\n# Content Types \n\nPossible values of the \"_Content Type_\" of a card are as follows:\n\n\n<table>\n  <tr>\n   <td><strong>Content Type</strong>\n   </td>\n   <td><strong>Applicable Fields from (/api/v2/syndication/items)</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>STORY\n   </td>\n   <td>All the fields except \"collectionItems\"\n   </td>\n  </tr>\n  <tr>\n   <td>VIDEO\n   </td>\n   <td>All the fields except \"collectionItems\"\n   </td>\n  </tr>\n  <tr>\n   <td>PHOTO\n   </td>\n   <td>All the fields except \"collectionItems\"\n   </td>\n  </tr>\n  <tr>\n  <td>\n  ASTROLOGY (similar to STORY, belonging to ASTRO category)\n  </td>\n  <td>\n  All the fields except \"collectionItems\"\n  </td>\n  </tr>\n  <tr>\n   <td>BANNER\n   </td>\n   <td>images & deepLinkUrl\n   </td>\n  </tr>\n  <tr>\n   <td>QUESTION_MULTI_CHOICES\n   </td>\n   <td>All the fields including \"collectionItems\" \n   </td>\n  </tr>\n  <tr>\n   <td>HTML\n   </td>\n   <td>*description* & *deepLinkUrl* (description will have HTML content for dynamic content channels such as for Elections, Cricket etc)\n   </td>\n  </tr>\n</table>\n\n\n\n# Feature Mask\n\nList of features:\n\n\n<table>\n  <tr>\n   <td><strong>Feature</strong>\n   </td>\n   <td><strong>Value</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>LIVE_TV_CARD\n   </td>\n   <td>1\n   </td>\n  </tr>\n  <tr>\n   <td>HERO_CARD\n   </td>\n   <td>8\n   </td>\n  </tr>\n  <tr>\n   <td>CRICKET_CARD\n   </td>\n   <td>16\n   </td>\n  </tr>\n  <tr>\n   <td>VIDEO_CHANNELS\n   </td>\n   <td>32\n   </td>\n  </tr>\n</table>\n\n\n*Bit 2 and 4 are reserved for some default feature.\n\n\n\n# UI Type - Content Type Mapping\n\n\n<table>\n  <tr>\n   <td><strong>Content Type <em>type</em></strong>\n   </td>\n   <td><strong>Card Layout <em>uiType</em></strong>\n   </td>\n   <td><strong>Example</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>STORY\n   </td>\n   <td>NORMAL \\\n(with image)\n   </td>\n   <td>\n\t<img src=\"https://imgur.com/e0G5V4Z.png\" width=\"\"  title=\"story_normal_img\">\n\t<img src=\"https://imgur.com/YzaqU7f.png\" width=\"\"  title=\"story_normal_img\">\n\n   </td>\n  </tr>\n  <tr>\n   <td>STORY\n   </td>\n   <td>NORMAL (without image)\n   </td>\n   <td>\n\t<img src=\"https://imgur.com/aoNPCiw.png\" width=\"\" title=\"story_normal\">\n   </td>\n  </tr>\n  <tr>\n   <td>STORY\n   </td>\n   <td>HERO\n   </td>\n   <td>\n   <img src=\"https://imgur.com/i4Wtdco.png\" width=\"\" title=\"story_hero\">\n   <img src=\"https://imgur.com/Mb5utcK.png\" width=\"\" title=\"story_hero\">\n   </td>\n  </tr>\n  <tr>\n   <td>STORY\n   </td>\n   <td>TILE_3\n   </td>\n   <td>\n<img src=\"https://imgur.com/lDZa2G9.png\" width=\"\" title=\"story_tile_3\">\n   </td>\n  </tr>\n  <tr>\n   <td>PHOTO\n   </td>\n   <td>TILE_3\n   </td>\n   <td>\n<img src=\"https://imgur.com/lDZa2G9.png\" width=\"\" title=\"photo_tile_3\">\n   </td>\n  </tr>\n  <tr>\n   <td>PHOTO\n   </td>\n   <td>GRID_3\n   </td>\n   <td>\n<img src=\"https://imgur.com/i3UKx2K.png\" width=\"\" title=\"photo_grid_3\">\n   </td>\n  </tr>\n  <tr>\n   <td>PHOTO\n   </td>\n   <td>GRID_5\n   </td>\n   <td>\n<img src=\"https://imgur.com/FZ5ohfc.png\" width=\"\" title=\"photo_grid_5\">\n   </td>\n  </tr>\n  <tr>\n   <td>VIDEO\n   </td>\n   <td>NORMAL\n   </td>\n   <td>\n<img src=\"https://imgur.com/BkeNnVH.png\" width=\"\" title=\"video_normal\">\n   </td>\n  </tr>\n  <tr>\n   <td>VIDEO\n   </td>\n   <td>HERO\n   </td>\n   <td>\n<img src=\"https://imgur.com/rtYL66n.png\" width=\"\" title=\"video_hero\">\n   </td>\n  </tr>\n  <tr>\n   <td>BANNER\n   </td>\n   <td>NORMAL\n   </td>\n   <td>\n<img src=\"https://imgur.com/K76LEi2.png\" width=\"\" title=\"banner_normal\">\n   </td>\n  </tr>\n  <tr>\n   <td>QUESTION_MULTI_CHOICES\n   </td>\n   <td>GRID\n   </td>\n   <td>\n<img src=\"https://imgur.com/00PZKh2.png\" width=\"\" title=\"q_multi_grid\">\n   </td>\n  </tr>\n  <tr>\n   <td>QUESTION_MULTI_CHOICES\n   </td>\n   <td>TAGS\n   </td>\n   <td>\n<img src=\"https://imgur.com/6jUNzFj.png\" width=\"\" title=\"q_multi_tags\">\n   </td>\n  </tr>\n  <tr>\n   <td>QUESTION_MULTI_CHOICES\n   </td>\n   <td>CAROUSEL\n   </td>\n   <td>\n<img src=\"https://imgur.com/jlTMzW2.png\" width=\"\" title=\"q_multi_carousel\">\n   </td>\n  </tr>\n</table>\n\n\n\n# Managing Clickouts\n\n\n\n1. When your user clicks on a story card, you will invoke the story card **deepLinkUrl** which is given in the [**syndication/items** api response](https://documenter.getpostman.com/view/3047734/SVfTQ7qA?version=latest#e961c9fc-ecf2-4c43-9db3-4f4a5c129ded) \nYou will also need to pass the **Dailyhunt Cookie (dhFeedV1)** while calling **deepLinkUrl**. This is important to ensure proper attribution.\n\n2. The deep link URL will either open in the browser (if user does not have Dailyhunt app installed) or in the Dailyhunt app (if user has Dailyhunt app installed & chooses to open with Dailyhunt app)\n\n\n3. Dailyhunt will include the following explicit tracking parameters in the **deepLinkUrl**.\n\n<table>\n  <tr>\n   <td><strong>Tracking Field Name</strong>\n   </td>\n   <td><strong>Tracking Field Value</strong>\n   </td>\n  </tr>\n  <tr>\n   <td><em>s</em>\n   </td>\n   <td>It represents the partner. Value will be the <em>Partner Code</em>, as configured by Dailyhunt team. \n   </td>\n  </tr>\n  <tr>\n   <td><em>ss</em>\n   </td>\n   <td>It represents the mode of integration on the partner side. Value will be, as configured by Dailyhunt team. Examples include - \"-1Screen\", \"LockScreen\", \"NativeBrowser\", \"QuickAccess\", \"NativeApp\", \"Stubs\", \"ContentBanners\" etc.\n   </td>\n  </tr>\n</table>\n\n\n\n# Managing Tracking\n\nTo help measure/track the cards seen by the user, you will need to pass the tracking data for each item card seen by your user. To enable this, Dailyhunt provides the tracking data & tracking POST URLs in the Content Fetch API response.\n\n\n### How to track the seen cards\n\n\n\n1. Dailyhunt provides **trackData** field for each card, this is mentioned in the [**Content Fetch API**](https://documenter.getpostman.com/view/3047734/SVfTQ7qA?version=latest#e961c9fc-ecf2-4c43-9db3-4f4a5c129ded) section,\n2. In the same response above, Dailyhunt also provides a tracking POST URL via the **trackUrl** field.\n\nYou will need to form an array of the **trackData** values and POST the same to the **trackUrl** for the cards seen by the user. You can do this periodically or every time user sees a page worth of cards (as close to the user activity as possible). Please refer to [**Tracking API**](https://documenter.getpostman.com/view/3047734/SVfTQ7qA?version=latest#6902dc22-50a6-438b-a062-0bcfa3479606) for more details.\n\n# Attribution \n\n## Comscore ListView attribution\n\n\nA call is required to be made to comscore for every list view that is invoked:\n\n  * As the first page in a new channel \n  * As the next page in the same channel\n  * On load of the list\n\nThere are two options to do this  basis the protocol used HTTP or HTTPS .\n1. Via javascript placed within the page (for browser integrations)\n2. Direct call (for native or any other non-browser integrations)\n\n### Javascript Approach\n\nInclude the below script tag for every list view:\n\nFor HTTPS:\n\n\t<div id=\"csDiv\"></div> <script> document.getElementById(\"csDiv\").innerHTML = '<img src=\"https://sb.scorecardresearch.com/p?c1=2&c2=21733245&c4=http%3A%2F%2Fm.dailyhunt.in%2Fnews%2F&c9=m.dailyhunt.in\" />'; </script>\n\nFor HTTP:\n\n\t<div id=\"csDiv\"></div> <script> document.getElementById(\"csDiv\").innerHTML = '<img src=\"http://b.scorecardresearch.com/p?c1=2&c2=21733245&c4=http%3A%2F%2Fm.dailyhunt.in%2Fnews%2F&c9=m.dailyhunt.in\" />'; </script>\n\t\n### Direct URL Approach\n\nIn this approach the client loading content page needs to fire below call to comscore on http/https based on the protocol client is following. This calls sets cookie back to client on 1st time call. Client needs to pass this cookie in all subsequent calls to comscore. All standard libraries handles it automatically.\n\nFor HTTPS:\n\thttps://sb.scorecardresearch.com/p?c1=2&c2=21733245&c4=http%3A%2F%2Fm.dailyhunt.in%2Fnews%2F&c9=m.dailyhunt.in\n\t\nFor HTTP:\n\thttp://b.scorecardresearch.com/p?c1=2&c2=21733245&c4=http%3A%2F%2Fm.dailyhunt.in%2Fnews%2F&c9=m.dailyhunt.in\n\n\n# Collecting User Feedback On Cards\n\nFor all the cards displayed at your end, your user may want to give feedback about the cards seen. Dailyhunt provides ability to show the specific feedback options that can be displayed to your user & allow to send the signals to the Dailyhunt server. Dailyhunt will use these signals to further improve the personalized feed of your user.\nRefer : [Feedback API](https://documenter.getpostman.com/view/8670292/SVmzsvnm?version=latest#3eb9a7cf-705f-425f-a12d-0a323eb34285)\n\n\n\n# Integration Points Of Contact\n\n\n<table>\n  <tr>\n   <td><strong>Contact</strong>\n   </td>\n   <td><strong>Primary</strong>\n   </td>\n  </tr>\n  <tr>\n   <td>Ankita Arora (<span style=\"text-decoration:underline;\">ankita.arora@dailyhunt.in</span>)\n<p>\nShashikant Kulkarni (<span style=\"text-decoration:underline;\">shashikant.kulkarni@dailyhunt.in</span>)\n   </td>\n   <td>Tech\n   </td>\n  </tr>\n  <tr>\n   <td>Adarsh Raja (<span style=\"text-decoration:underline;\">adarsh.raja@verse.in</span>)\n   </td>\n   <td>Product/UX\n   </td>\n  </tr>\n</table>\n\n\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"8670292","team":515179,"collectionId":"5864ebbc-9575-4958-94e6-21a292fb6960","publishedId":"SVmzsvnm","public":true,"publicUrl":"https://documenter-api.postman.tech/view/8670292/SVmzsvnm","privateUrl":"https://go.postman.co/documentation/8670292-5864ebbc-9575-4958-94e6-21a292fb6960","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"D0021B"},"documentationLayout":"classic-double-column","version":"8.12.3","publishDate":"2019-09-23T09:15:43.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/cf8ed5ec0af6613d8a7c1a89f899829a662b74458888a44ebe32dba8d68b159e","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/SVmzsvnm"}