Important Changes: 2017ish - userid depreciated and removed from most APIs. Use userToken instead. May 13th 2019 - ?generator= will force itself to Elite Insights regardless of option. API docs will be updated in the future to reflect this. May 13th 2019 - ?rotation_weap1 currently does nothing, Elite Insights has the toggle built into its output now Sep 5th 2020 - 'userid' completed removed from uploadContent, use userToken instead! 'identifier' removed from all JSON outputs, as it was never used. Removed documentation about 'rotation_weap1' Mar 28th 2021 - Added 'anonymous' and 'detailedwvw' params to uploadContent. Apr 4th 2021 - Added 'anonymous' and 'detailed' to 'report' to the metadata json object. [This documentation will be updated to be clearer later..] Hi this is the 'api' docs for dps.report == General Info == This API was designed to be entirely HTTP and JSON, so should be usable in any modern programming language without too much hassle. Params may be passed only through HTTP request query strings and are case sensitive unless otherwise noted. -> If you just want to make a simple uploading tool, please scroll down to the File Upload example below. <- == User Token == dps.report does not currently support logins. However, upon accessing the site, variable userToken will be generated and stored via cookies. This value is also used in the api and returned as "userToken" in JSON, and can be submitted via cookie or via userData= in a call. You can use this value to fetch previous uploads and access other features that will be added later. PROTECT YOUR USERTOKEN! Treat it like a password. Anyone with access to this value can look up any logs uploaded with it. See /getUserToken == Service Domains == There are THREE service domains available for the API and general site use. PLEASE ensure your application supports switching between these, as they use different networks and have different performance depending on you or your users region. https://dps.report/ - Cloudflare. Supports HTTPS. We've found this to be Generally Unreliable in Eastern European and Asian countries. http://a.dps.report/ - Imperva. Supports HTTP ONLY. Fairly reliable, use as last resort. https://b.dps.report/ - Stackpath. Supports HTTP and HTTPS. Alternate service domain that supports HTTPS. == File Uploads - /uploadContent == Endpoint URL: https://dps.report/uploadContent Params supported: [May be in query string or POST formdata] json=1 - Return only a JSON object, as defined below. [Recommend, not default] generator=ei - What log generating tool to use. [Currently only supports 'ei' for Elite Insights] userToken=% - Optional userToken to store previous uploads and future features. See User Token docs above. anonymous=false - Set to 'true' to enable anonymized reports. detailedwvw=false - Set to 'true' to enabled detailed WvW reports. This may break and return a 500 error with particularly long logs. file - File object [formdata only] Returns: - A single JSON object 'error' upon failure to generate a report; JSON object regardless of json=1 being set or not. - Embed text if json=1 is not set. - Otherwise: JSON Object: "id" = Internal dps.report ID "permalink" = Generated report URL "identifier" = Future Update "uploadTime" = Upload date, unix time format "encounterTime" = Encounter date from evtc, unix time format "generator" = Report generator tool used "generatorId" = Internal report generator id. "generatorVersion" = Internal. Report generator version. "language" = Language id from evtc. Can be en, fr, de, es, or zh. "languageId" = Internal language ID, numeric. "userToken" = Your userToken. See userToken documentation above. "error" = Error messages upon uploading, set to null if none are encountered. Report may still be generated even with this set. "encounter" = JSON Object, encounter statistics - "uniqueId" = Encounter 'unique identifier', computed from instance ids. This attempts to uniquely identify raid attempts/encounters across users. This -WILL- be set to null if an identifier cannot be uniquely generated! - "success" = If encounter was successful [boss kill] or not. - "duration" = Time in seconds of encounter. This may not be accurate with server delays and evtc logging issues. - "compDps" = Computed overall DPS of the group. - "numberOfPlayers" = Number of players in the encounter - "numberOfGroups" = Number of party/squad groups in the encounter - "bossId" = Boss ID of encounter. See https://dps.report/docs/bossIds.txt - "boss" = Boss name. - "isCm" = Is encounter Challenge Mode enabled. - "gw2Build" = GW2 client build - "jsonAvailable" = Is extra encounter data available at the /getJson endpoint "evtc" = evtc metadata object - "type" = Should always return 'evtc' - "version" = Version of ARCDPS evtc file was generated in - "bossId" = Boss ID of encounter. Same as encounter->bossId - See https://dps.report/docs/bossIds.txt "players" = Player objects, array. This may be empty on older arc versions. - "display_name" = Login name of the player. - "character_name" = Character name. - "profession" = Profession ID. See https://api.guildwars2.com/v2/professions?ids=all - "elite_spec" = Elite spec traitline ID. See https://api.guildwars2.com/v2/specializations?ids=all "report" - "anonymous" = true/false - If report was generated with anonimized fake players. - "detailed" = true/false - If report was generated with detailed players. Example: Submit - https://dps.report/uploadContent?json=1&generator=ei - file: 20200903-190501.zevtc Return - { "id": "erhi-20200903-190501", "permalink": "https://dps.report/erhi-20200903-190501_arkk", "uploadTime": 1599308575, "encounterTime": 1599174067, "generator": "Elite Insights", "generatorId": 1, "generatorVersion": 2, "language": "en", "languageId": 0, "evtc": { "type": "EVTC", "version": "20200815", "bossId": 17759 }, "players": { "Micca Feralchain": { "display_name": "Mickathia.8701", "character_name": "Micca Feralchain", "profession": 3, "elite_spec": 57 }, "Aestia Honorheart": { "display_name": "Bloosh.9745", "character_name": "Aestia Honorheart", "profession": 1, "elite_spec": 62 }, "Reigna Adeptpaws": { "display_name": "Jun.9371", "character_name": "Reigna Adeptpaws", "profession": 5, "elite_spec": 7 }, "Serella Novasight": { "display_name": "Nysha.7021", "character_name": "Serella Novasight", "profession": 9, "elite_spec": 63 }, "Jarett Dragonheart": { "display_name": "Drgn Gold.4835", "character_name": "Jarett Dragonheart", "profession": 4, "elite_spec": 55 } }, "encounter": { "uniqueId": "f7pO5gl9mUV58RjWFxf2+g", "success": true, "duration": 234, "compDps": 47339, "numberOfPlayers": 5, "numberOfGroups": 1, "bossId": 17759, "boss": "Arkk", "isCm": true, "gw2Build": 105843, "jsonAvailable": true }, "error": null, "userToken": "" //Intentionally left blank in this example } Notes: Background the upload process. dps.report will stall http threads until a permalink can be generated. This can take seconds to several minutes. == Previous Uploads - /getUploads == Endpoint URL: https://dps.report/getUploads Fetch previous uploads for a given user's userToken. Params: page=1 - This call only fetches 25 entries at a time. Increase this parameter by 1 to get the next set. userToken=% - User Token. See above. Required for this call to be of any use, but can be passed via cookie. Returns: A JSON object of basic information and upload objects. Generally sorted by uploadTime descending. JSON Object: "pages" = number of pages total, use with page= "userToken" = User Token, as described in User Token docs above. "uploads" = Upload Objects Array JSON Upload Object: JSON Object: "id" = Internal dps.report ID "permalink" = Generated report URL "identifier" = Future Update "uploadTime" = Upload date, unix time format "encounterTime" = Encounter date from evtc, unix time format "generator" = Report generator tool used "generatorId" = Internal report generator id. "generatorVersion" = Internal. Report generator version. "language" = Language id from evtc. Can be en, fr, de, es, or zh. "languageId" = Internal language ID, numeric. "userToken" = Your userToken. See userToken documentation above. "error" = Error messages upon uploading, set to null if none are encountered. Report may still be generated even with this set. "encounter" = JSON Object, encounter statistics - "uniqueId" = Encounter 'unique identifier', computed from instance ids. This attempts to uniquely identify raid attempts/encounters across users. This -WILL- be set to null if an identifier cannot be uniquely generated! - "success" = If encounter was successful [boss kill] or not. - "duration" = Time in seconds of encounter. This may not be accurate with server delays and evtc logging issues. - "compDps" = Computed overall DPS of the group. - "numberOfPlayers" = Number of players in the encounter - "numberOfGroups" = Number of party/squad groups in the encounter - "bossId" = Boss ID of encounter. See https://dps.report/docs/bossIds.txt - "gw2Build" = GW2 client build - "jsonAvailable" = Is extra encounter data available at the /getJson endpoint "evtc" = evtc metadata object - "type" = Should always return 'evtc' - "version" = Version of ARCDPS evtc file was generated in - "bossId" = Boss ID of encounter. Same as encounter->bossId - See https://dps.report/docs/bossIds.txt "players" = Player objects, array. This may be empty on older arc versions. - "display_name" = Login name of the player. - "character_name" = Character name. - "profession" = Profession ID. See https://api.guildwars2.com/v2/professions?ids=all - "elite_spec" = Elite spec traitline ID. See https://api.guildwars2.com/v2/specializations?ids=all "report" - "anonymous" = true/false - If report was generated with anonimized fake players. - "detailed" = true/false - If report was generated with detailed players. "tempApiId" = Internal sorting ID given to upload. Will change with new uploads on this user. Provided on the offchance it may be useful to GUI devs. == User Token - /getUserToken == Endpoint URL: https://dps.report/getUserToken Gets current or generates a new userToken for use in uploads. This is generated automatically if an api call is made without a token, but is provided for convinence. Params: userToken=% - Not required. Generates a new token if none passed or is invalid. Returns: JSON Object "userToken" = User token. See User Token docs above. == Report Metadata - /getUploadMetadata == Gets metadata about a previous upload, by id OR permalink. This endpoint is still under development and some return parameters may change in the future. Endpoint URL: https://dps.report/getUploadMetadata Params: id=% - Gets report by ID. permalink=% - Gets report by permalink/url. Returns: JSON Object: "id" = Internal dps.report ID "permalink" = Generated report URL "identifier" = Future Update "uploadTime" = Upload date, unix time format "encounterTime" = Encounter date from evtc, unix time format "generator" = Report generator tool used "generatorId" = Internal report generator id. "generatorVersion" = Internal. Report generator version. "language" = Language id from evtc. Can be en, fr, de, es, or zh. "languageId" = Internal language ID, numeric. "userToken" = Your userToken. See userToken documentation above. "error" = Error messages upon uploading, set to null if none are encountered. Report may still be generated even with this set. "encounter" = JSON Object, encounter statistics - "uniqueId" = Encounter 'unique identifier', computed from instance ids. This attempts to uniquely identify raid attempts/encounters across users. This -WILL- be set to null if an identifier cannot be uniquely generated! - "success" = If encounter was successful [boss kill] or not. - "duration" = Time in seconds of encounter. This may not be accurate with server delays and evtc logging issues. - "compDps" = Computed overall DPS of the group. - "numberOfPlayers" = Number of players in the encounter - "numberOfGroups" = Number of party/squad groups in the encounter - "bossId" = Boss ID of encounter. See https://dps.report/docs/bossIds.txt - "gw2Build" = GW2 client build - "jsonAvailable" = Is extra encounter data available at the /getJson endpoint "evtc" = evtc metadata object - "type" = Should always return 'evtc' - "version" = Version of ARCDPS evtc file was generated in - "bossId" = Boss ID of encounter. Same as encounter->bossId - See https://dps.report/docs/bossIds.txt "players" = Player objects, array. This may be empty on older arc versions. - "display_name" = Login name of the player. - "character_name" = Character name. - "profession" = Profession ID. See https://api.guildwars2.com/v2/professions?ids=all - "elite_spec" = Elite spec traitline ID. See https://api.guildwars2.com/v2/specializations?ids=all "report" - "anonymous" = true/false - If report was generated with anonimized fake players. - "detailed" = true/false - If report was generated with detailed players. == Encounter Data JSON - /getJson == Gets extra JSON-encoded encounter data about a report, if available. This is Elite Insights' JSON output. See https://github.com/baaron4/GW2-Elite-Insights-Parser Endpoint URL: https://dps.report/getJson Params: id=% - Gets report by ID. permalink=% - Gets report by permalink/url. Returns: JSON Object See https://github.com/baaron4/GW2-Elite-Insights-Parser