{"paths":{"/authentication":{"post":{"parameters":[{"name":"body","description":"credential object","required":true,"schema":{"properties":{},"example":{"strategy":"local","email":"your@email.com","password":"your-password"},"type":"object"},"in":"body"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"accessToken":"<huge-token-string>"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}}},"description":"Returns a token based on the credentials of the user. These credentials can be obtained by contactin the developper (ERS Webmaster), there are two strategies: local and local-username, of course if the strategy is loca-username change the email to username in the sent object","summary":"Get a token to authenticate.","tags":["authentication"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/app-community":{"get":{"description":"All posts for the community, ordered by created date, this endpoint is not cached, it can be enabled","summary":"Get (spotme) community posts","parameters":[{"name":"sortBy","description":"The CMS's property to sort by example: '_system.created_on.ms' or '_system.modified_on.ms' ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortDirection","description":"sorting direction (1 = asc, -1 = desc)","required":false,"allowMultiple":false,"type":"integer","in":"query","enum":[1,-1]},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[{"content":"string","fp_status":"string","parent_doc_id":"string","extra_content":"string","order":"int","created_at":"string","image_url":"string"}],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["app-community"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/app-highlights":{"get":{"description":"Returns all Highlight content for the App","summary":"","parameters":[{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["app-highlights"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/app-highlights/{slug}":{"get":{"id":"slug","description":"Returns a highlight object based on the slug or alias of the article. Full is set to true by default, it can be overridden if necessary by setting it to false","summary":"Get a course from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["app-highlights"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/calendar":{"get":{"description":"Returns the full event calendar of the ERS with internal, external, endorsed events and deadlines. If __no type__ is set, __ERS only events are returned__  <ul><li>For now pagination cannot be trusted as past events are filtered after querying the CMS, this will be improved soon</li></ul>","summary":"Get calendar items","parameters":[{"name":"type","description":"The type of event returned by the calendar, __ers__ is the default and is not necessary in the query string\n      * ers - ERS only events\n      * deadlines - ERS deadlines, a typical deadline is the abstract submission\n      * endorsed - Events not organised by ERS, but endorsed by ERS\n      * non-ers - Events that have been approved in our calendar but that are nor endorsed nor ers\n      * spirometry - Spirometry Training Programme - These events appear under ERS as they are ERS events, but they can also appear by their own on some pages\n      * hermes - HERMES pages - These events appear under ERS as they are ERS events, but they can also appear by their own on some pages\n      * selfAssessment - Self-assessment course - These events appear under ERS as they are ERS events, but they can also appear by their own on some pages\n      * all - ...\n    ","required":false,"type":"string","in":"query","enum":["ers","deadline","endorsed","non-ers","spirometry","all"]},{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"reverse","description":"If set to true, the order will be reversed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"timeline","description":"If set to true, returned item will be grouped by year then by month for easy timeline display. the retruned structure is different: <br /> <pre><code>\n      { \n        '2018': \n          {\n            mars:[],\n            april:[]\n          },\n        '2019': {}  \n      }\n      </code></pre>","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation - test","schema":{"type":"object","example":{"data":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["calendar"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/cpd":{"get":{"description":"Returns the Continuing Professional Development category and related content","summary":"Get all courses and the category description","parameters":[{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["cpd"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/cpd/{slug}":{"get":{"id":"slug","description":"Returns a content object based on the slug or alias of the article. Full is set to true by default, it can be overridden if necessary by setting it to false","summary":"Get a content object from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["cpd"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/congress/sessions":{"get":{"description":"List all sessions of the congress, the year param or the K4 events is required in order list content from only one congress.<br><br>__important__: this service let you add any property as parameter, this allows for filtering based on a property. It is __recommended__ to use the `year=2018` or the `k4EventNumber=90` to filter the events as the database stores all of our events.<br><br>Any property can be used to __filter__ items.","summary":"list congress sessions","parameters":[{"name":"<property name>","description":"any property can be used to query the model:\n    <br /> \n      <pre><code>\n        ?sessionID=5554&private=false\n      </code></pre>","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$sort","description":"sort items by property: <br /> \n      <pre><code>\n        ?$sort[startTimeDate]=1\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$select","description":"return only the properties of interest (and the interal _id): <br /> \n      <pre><code>\n        &$select[]=Content\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$lt, $lte","description":"less than, less than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$gt, $gte","description":"greather than, greater than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n    /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$in, $nin","description":"in, not in - the type is not important, it is cast according to the model: <br /> \n    <pre><code>\n      /<service>?typeID[$in]=302&typeID[$in]=288\n    </code></pre>","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"$or","description":"or - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?$or[0][private][$ne]=true&$or[1][typeID]=288\n    </code></pre><br />","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$ne","description":"not equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$ne]=2017-09-10T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"total":"int","limit":"int","skip":"int","data":[]}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new sessions","summary":"Create a new sessions [admin role]","parameters":[{"name":"object","description":"The user to create","required":true,"schema":{"properties":{},"example":{"email":"user email","username":"username","password":"user password","permissions":"the permission the user is granted"},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","example":{"email":"string","permissions":"string","_id":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/congress/sessions/{id}":{"get":{"summary":"Get a session","id":"id","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"_id":"string","id":"int","...":"..."}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"description":"ID of sessions to return","in":"path","required":true,"name":"id","type":"integer"}],"description":"Retrieves a single resource with the given id from the service.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"put":{"id":"id","summary":"Update a session [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"patch":{"id":"id","summary":"Patch a session [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"delete":{"description":"Remove a session","summary":"Remove a sessions [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"name":"id","description":"Id of the session to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"produces":["application/json"],"security":[{"bearer":[]}],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/congress/presentations":{"get":{"description":"List all sessions of the congress, the year param or the K4 events is required in order list content from only one congress.<br><br>__important__: this service let you add any property as parameter, this allows for filtering based on a property. It is __recommended__ to use the `year=2018` or the `k4EventNumber=90` to filter the events as the database stores all of our events.<br><br>Any property can be used to __filter__ items.","summary":"list congress presentations","parameters":[{"name":"<property name>","description":"any property can be used to query the model:\n    <br /> \n      <pre><code>\n        ?sessionID=5554&private=false\n      </code></pre>","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$sort","description":"sort items by property: <br /> \n      <pre><code>\n        ?$sort[startTimeDate]=1\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$select","description":"return only the properties of interest (and the interal _id): <br /> \n      <pre><code>\n        &$select[]=Content\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$lt, $lte","description":"less than, less than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$gt, $gte","description":"greather than, greater than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n    /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$in, $nin","description":"in, not in - the type is not important, it is cast according to the model: <br /> \n    <pre><code>\n      /<service>?typeID[$in]=302&typeID[$in]=288\n    </code></pre>","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"$or","description":"or - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?$or[0][private][$ne]=true&$or[1][typeID]=288\n    </code></pre><br />","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$ne","description":"not equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$ne]=2017-09-10T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"total":"int","limit":"int","skip":"int","data":[]}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new presentation","summary":"Create a new presentation [admin role]","parameters":[{"name":"object","description":"The user to create","required":true,"schema":{"properties":{},"example":{"email":"user email","username":"username","password":"user password","permissions":"the permission the user is granted"},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","example":{"email":"string","permissions":"string","_id":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/congress/presentations/{id}":{"get":{"summary":"Get a presentation","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"_id":"string","id":"int","...":"..."}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"description":"ID of presentations to return","in":"path","required":true,"name":"id","type":"integer"}],"description":"Retrieves a single resource with the given id from the service.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"put":{"id":"id","summary":"Update a presentation [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"patch":{"id":"id","summary":"Patch a presentation [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"delete":{"description":"Remove a presentation","summary":"Remove a presentation [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"name":"id","description":"Id of the presentation to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"produces":["application/json"],"security":[{"bearer":[]}],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/congress/abstracts":{"get":{"description":"List all sessions of the congress, the year param or the K4 events is required in order list content from only one congress.<br><br>__important__: this service let you add any property as parameter, this allows for filtering based on a property. It is __recommended__ to use the `year=2018` or the `k4EventNumber=90` to filter the events as the database stores all of our events.<br><br>Any property can be used to __filter__ items.","summary":"list congress abstracts","parameters":[{"name":"<property name>","description":"any property can be used to query the model:\n    <br /> \n      <pre><code>\n        ?sessionID=5554&private=false\n      </code></pre>","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$sort","description":"sort items by property: <br /> \n      <pre><code>\n        ?$sort[startTimeDate]=1\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$select","description":"return only the properties of interest (and the interal _id): <br /> \n      <pre><code>\n        &$select[]=Content\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$lt, $lte","description":"less than, less than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$gt, $gte","description":"greather than, greater than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n    /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$in, $nin","description":"in, not in - the type is not important, it is cast according to the model: <br /> \n    <pre><code>\n      /<service>?typeID[$in]=302&typeID[$in]=288\n    </code></pre>","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"$or","description":"or - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?$or[0][private][$ne]=true&$or[1][typeID]=288\n    </code></pre><br />","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$ne","description":"not equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$ne]=2017-09-10T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"total":"int","limit":"int","skip":"int","data":[]}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new abstracts","summary":"Create a new abstract [admin role]","parameters":[{"name":"object","description":"The user to create","required":true,"schema":{"properties":{},"example":{"email":"user email","username":"username","password":"user password","permissions":"the permission the user is granted"},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","example":{"email":"string","permissions":"string","_id":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/congress/abstracts/{id}":{"get":{"summary":"Get a abstract","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"_id":"string","id":"int","...":"..."}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"description":"ID of abstracts to return","in":"path","required":true,"name":"id","type":"integer"}],"description":"Retrieves a single resource with the given id from the service.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"put":{"id":"id","summary":"Update a abstract [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"patch":{"id":"id","summary":"Patch a abstract [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["congress"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"delete":{"description":"Remove a abstract","summary":"Remove an abstract [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"name":"id","description":"Id of the abstract to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"produces":["application/json"],"security":[{"bearer":[]}],"tags":["congress"],"consumes":["application/json"],"securityDefinitions":{}}},"/cme-online":{"get":{"description":"Returns list of CME Online Module","summary":"Get list of CME Online Module","parameters":[{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"sortBy","description":"The CMS's property to sort by example: '_system.created_on.ms' or '_system.modified_on.ms' ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"types","description":"Allows to filter content based on cme type:\n    <ul>\n      <li>chain the types that are needed separated by a comma: Case based,Topic Based</li>\n    <ul>\n    <pre><code>\n      ?cmeTypes=Case based,Topic Based\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"categories","description":"Allows to filter content based on cme categories:\n    <ul>\n      <li>chain the types that are needed separated by a comma: COPD,Astma</li>\n    <ul>\n    <pre><code>\n      ?cmeCategories=COPD,Astma\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortDirection","description":"sorting direction (1 = asc, -1 = desc)","required":false,"allowMultiple":false,"type":"integer","in":"query","enum":[1,-1]},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["cme-online"],"consumes":["application/json"],"security":{},"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Create a new CME Online Module","summary":"Create a new CME Online Module - Role [admin, cmeModule]","parameters":[{"name":"body","description":"credential object","required":true,"schema":{"properties":{},"example":{},"type":"object"},"in":"body"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["cme-online"],"consumes":["application/json"],"securityDefinitions":{}}},"/cme-online/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the cme module based on the slug or alias of the module. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get a cme module from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["cme-online"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/courses":{"get":{"description":"Returns all ERS courses","summary":"Get all courses and the category description","parameters":[{"name":"type","description":"Filters courses. \n     * 'all' returns... all published courses\n     * 'past' returns courses that are already passed but still published","required":false,"in":"query","type":"string","enum":["past","all"]},{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["courses"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/courses/{slug}":{"get":{"id":"slug","description":"Returns a course object based on the slug or alias of the article. Full is set to true by default, it can be overridden if necessary by setting it to false","summary":"Get a course from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["courses"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/ers/contacts":{"get":{"security":[{"bearer":[]}],"description":"Returns ERS contacts - to use this endpoint you need to have a CRM user role","summary":"Get contacts based on a pattern [admin, crm-user roles]","parameters":[{"name":"pattern","description":"search pattern","required":true,"type":"string","allowMultiple":false,"in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"},"status":"integer","accessToken":"string","key4Token":"string","preferences":{}}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["ers"],"consumes":["application/json"],"securityDefinitions":{}}},"/ers/contacts/{id}":{"get":{"id":"contact id","security":[{"bearer":[]}],"description":"Returns a contact object based on the contact id - to use this endpoint you need to have a CRM user role, the user data is cached","summary":"Get a contact based on its id [admin, myERS[owner] roles]","parameters":[{"name":"contactid","description":"The id of the contact","required":true,"type":"integer","allowMultiple":false,"in":"path"}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["ers"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}}},"/feed":{"get":{"description":"All content of the CMS returned chronologically and by type","summary":"Get all content","parameters":[{"name":"type","description":"type of content (content model). \n    * 'ers:article' content of the ERS (news, courses, vision, etc...)\n    * 'sb:article' content of the Sleep and breathing conference","required":true,"in":"query","type":"string","enum":["ers:article","sb:article"]},{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortBy","description":"The CMS's property to sort by example: '_system.created_on.ms' or '_system.modified_on.ms' ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortDirection","description":"sorting direction (1 = asc, -1 = desc)","required":false,"allowMultiple":false,"type":"integer","in":"query","enum":[1,-1]},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["feed"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/filters/{endpoint}":{"get":{"id":"endpoint","description":"Returns ready to use filters for an endpoint as full url. The response returns two types of filters: users and system. The system filters do not have a label as they are not meant for users but rather to return specific data to display somewhere else","summary":"Get available filters for an endpoint","parameters":[{"name":"endpoint","description":"the name of the endpoint: e.g. 'courses'","required":true,"allowMultiple":false,"type":"string","in":"path"}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"filters":{"user":[{"url":"string","label":"string","filter":"string"}],"system":[]},"_sys":{"status":"int"}}}},"204":{"description":"No result returned for request, but request sucessful","schema":{"type":"object","properties":{"filters":{"type":"object"},"_sys":{"type":"object"}},"example":{"filters":{"user":[],"system":[]},"_sys":{"status":204,"message":"No filters available for service: name-of-requested-service"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["filters"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/highlights":{"get":{"description":"This enpoint is the highlight feed of the ERS. Everything that has been highlighted (manual curration) is returned. The first news, regardless of its publication date is a news that has the property __mainNews__ set to __true__, normally there is only one of such news.","summary":"Get ERS highlights","parameters":[{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["highlights"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/interests":{"get":{"description":"Returns all ERS Interests, interests are divided in diseases and methods. This endpoint can be used to implement intrests screens for a user.","summary":"Get all intersts and their limits","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[{"title":"string","values":["string","string"],"limits":{"min":1,"max":0}}],"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["interests"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/journals":{"get":{"description":"List journals articles, only abstracts. Mainly ERS Journals such as the _European Respiratory Journal_, _Breathe_, the _European Respiratory Review_, the _ERJ Open Research_, but also related abstracts from a series of medical journals.","summary":"list Journals articles (abstracts)","parameters":[{"name":"<property name>","description":"any property can be used to query the model:\n    <br /> \n      <pre><code>\n        ?sessionID=5554&private=false\n      </code></pre>","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"$sort","description":"sort items by property: <br /> \n      <pre><code>\n        ?$sort[startTimeDate]=1\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"integer","in":"query"},{"name":"$select","description":"return only the properties of interest (and the interal _id): <br /> \n      <pre><code>\n        &$select[]=Content\n      </code></pre><br />ascending: 1, descending: -1","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$lt, $lte","description":"less than, less than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$gt, $gte","description":"greather than, greater than or equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n    /<service>?startDateTime[$lt]=2017-09-10T06:30:00.000Z&endDateTime[$gt]=2017-09-09T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$in, $nin","description":"in, not in - the type is not important, it is cast according to the model: <br /> \n    <pre><code>\n      /<service>?typeID[$in]=302&typeID[$in]=288\n    </code></pre>","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"$or","description":"or - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?$or[0][private][$ne]=true&$or[1][typeID]=288\n    </code></pre><br />","required":false,"allowMultiple":true,"type":"string","in":"query"},{"name":"$ne","description":"not equal - the type is not important, it is cast according to the model:<br /> \n    <pre><code>\n      /<service>?startDateTime[$ne]=2017-09-10T06:30:00.000Z\n    </code></pre>","required":false,"allowMultiple":true,"type":"string","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"total":"int","limit":"int","skip":"int","data":[]}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["journals"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new journal abstract","summary":"Create a new journal abstract [admin role]","parameters":[{"name":"object","description":"The user to create","required":true,"schema":{"properties":{},"example":{"email":"user email","username":"username","password":"user password","permissions":"the permission the user is granted"},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","example":{"email":"string","permissions":"string","_id":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["journals"],"consumes":["application/json"],"securityDefinitions":{}}},"/journals/{_id}":{"get":{"summary":"Get a journal abstract","id":"_id","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"_id":"string","id":"int","...":"..."}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"description":"ID of journals to return","in":"path","required":true,"name":"_id","type":"integer"}],"description":"Retrieves a single resource with the given id from the service.","tags":["journals"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}},"put":{"id":"id","summary":"Update a journal abstract [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["journals"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"patch":{"id":"id","summary":"Patch a journal abstract [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["journals"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"delete":{"description":"Remove a journal abstract","summary":"Remove a journals [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"name":"_id","description":"Id of the abstract to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"produces":["application/json"],"security":[{"bearer":[]}],"tags":["journals"],"consumes":["application/json"],"securityDefinitions":{}}},"/leadership":{"get":{"description":"Returns the Leadership with the corresponding declaration of conflict of interests (DOI). The result needs to be correctly parsed. Ref: https://www.ersnet.org/the-society/who-we-are/leadership <br> There is two properties the **Declartion** and the **sorted**, the first one is the raw data, the second has be reworked to simplify parsing. As a rule of thumb, capitalized properties are **original CRM properties**.<br /> Not all properties are always present. The 'pInterests' one can contain 4 properties but they are only present if there is data, one of them,  the 'CON' properties, has an aditional properties 'Area'","summary":"Get leadership with DOI","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[{"sorted":{"pInterests":{"title":"1 - Personal interests","data":{"CON":[],"BEN":[],"TRA":[],"SHA":[]}},"npInterests":{"title":"2 - Non-Personal interests","data":[]},"oInterests":{"title":"3 - Other Interests that may be seen as potential conflicts","data":[]},"tobacco":{"title":"4 - Tobacco-Industry related Conflicts of Interests","data":""}}}],"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["leadership"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/ers/contacts/login":{"post":{"parameters":[{"name":"body","description":"credential object","required":true,"schema":{"properties":{},"example":{"username":"myERS username","password":"myERS password"},"type":"object"},"in":"body"}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200,"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"},"preferences":{},"accessToken":"string","apiUserId":"string","spotmeId":[],"key4Token":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"description":"Checks myERS login credentials and returns the contact details if successful as well as an __API JWT__ token and a __Key 4 Events__ token (used to retrieve the congress calendar). An API user is created based on the ERS user, each time the user logs in the API user is updated if any field has changed, the user's permissions is set to __myERS__. <br />the User's data is cached (not the token and the rest of the response). When the users changes is myERS profile the cache is busted for that user.","summary":"Checks login, returns the contact and API token","tags":["ers"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/metanav":{"get":{"description":"returns the html and css to integrate the \"metanavigation\" a navigation that is common to ERS websites. [Find out more...](https://github.com/EuropeanRespiratorySociety/ERSTemplate-dev)","summary":"Get the metanavigation","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"menu":"html string","status":200}}},"404":{"description":"not found","schema":{"type":"string"}}},"produces":["application/json"],"tags":["metanav"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/news":{"get":{"description":"This enpoint is the news feed of the ERS. Every thing that is published as a news is returned by it","summary":"Get all ordered news","parameters":[{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"sortBy","description":"The CMS's property to sort by example: '_system.created_on.ms' or '_system.modified_on.ms' ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortDirection","description":"sorting direction (1 = asc, -1 = desc)","required":false,"allowMultiple":false,"type":"integer","in":"query","enum":[1,-1]},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["news"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/news/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the article based on the slug or alias of the article. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["news"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/notification":{"post":{"description":"Receives a Cloud CMS object and submits a notification to the app","summary":"Send a notification","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["notification"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/preferences":{"get":{"description":"List all preferences of all users. This endpoint is reserved to user with the correct role (Admin)","summary":"list all users [admin role]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new preference object for a user. The user needs to be a user of the API as the the token will be matched","summary":"New preference object for a user [owner]","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","properties":{"layout":{"type":"string"},"ersId":{"type":"integer"},"_id":{"type":"string"}},"example":{"layout":"feed","ersId":200000,"_id":"59a9526c5fe1ea1b21dc5e04"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}}},"/preferences/{_id}":{"get":{"id":"_id","description":"Get a user's preferences by user ID","summary":"Get preferences [owner]","parameters":[{"name":"apiUserId","description":"user id of the preferences to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}},"put":{"summary":"Update preferences [owner]","description":"Update user's preference by ID","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}},"patch":{"id":"_id","summary":"Patch a user's preference [owner]","description":"Patch user's preference by ID","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","properties":{"layout":{"type":"string"},"ersId":{"type":"integer"},"_id":{"type":"string"}},"example":{"layout":"feed","ersId":200000,"_id":"59a9526c5fe1ea1b21dc5e04"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}},"delete":{"id":"_id","description":"Remove a preference object","summary":"Remove a preference object [owner]","parameters":[{"name":"apiUserId","description":"user id of the preferences to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"security":[{"bearer":[]}],"tags":["preferences"],"consumes":["application/json"],"securityDefinitions":{}}},"/publications":{"get":{"description":"Returns all ERS publications, **the link to the actual publication** is available in the property '**externalLink**'","summary":"Get publications","parameters":[{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["publications"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/publications/{slug}":{"get":{"id":"slug","description":"Returns the description of one publication based on its slug. **The link to the actual publication** is available in the property '**externalLink**'","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["publications"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/relatives":{"get":{"description":"Returns the category (node) and its outgoing relatives with the association ers:article. Full is set to false by default for the items, can be set to true if necessary. The category is returns all its data","summary":"Get articles relative to a node with the node","parameters":[{"name":"qname","description":"qname or _qname or the node","required":true,"type":"string","allowMultiple":false,"in":"query"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["relatives"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/relatives/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the article based on the slug or alias of the article. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["relatives"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/respiratory-digest":{"get":{"description":"Returns list of respiratory digest","summary":"Get list of respiratory digest","parameters":[{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"sortBy","description":"The CMS's property to sort by example: '_system.created_on.ms' or '_system.modified_on.ms' ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"filterBy","description":"Allows to filter content based on diseases and methods:\n        <ul>\n          <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n        <ul>\n        __Note__: this filter is now generic an matches only methods and diseases, it could also match other fields. If for better filtering, other otpions are needed do not hesitate to contact the developer.\n        <pre><code>\n          ?filterBy=Airway diseases,Public health\n        </code></pre>\n        ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"sortDirection","description":"sorting direction (1 = asc, -1 = desc)","required":false,"allowMultiple":false,"type":"integer","in":"query","enum":[1,-1]},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["respiratory-digest"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/respiratory-digest/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the respiratory digest on the slug or alias of the article. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get a respiratory digest from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["respiratory-digest"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/respiratory-matters":{"get":{"description":"Returns all the article of the Respiratory Matters Blog","summary":"Get articles relative to a node with the node","parameters":[{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["respiratory-matters"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/respiratory-matters/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the article based on the slug or alias of the article. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["respiratory-matters"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/search":{"get":{"description":"Search - search across all indices or configure wich one to search","summary":"Search (not all indices enabled)","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["search"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/sleepandbreathing":{"get":{"description":"Returns a category and the relative articles","summary":"Get category and its articles","parameters":[{"name":"qname","description":"qname or _qname or the node","required":true,"type":"string","allowMultiple":false,"in":"query"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["sleepandbreathing"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/sleepandbreathing/{slug}":{"get":{"id":"slug","description":"Returns an object with the content of the article based on the slug or alias of the article. Full is set to true by default, it can be overwritten if necessary by setting it to false","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["sleepandbreathing"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/training-data":{"get":{"description":"List all training objects","summary":"list all training objects [admin]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new training object. The user needs to be a user of the API as the the token will be matched","summary":"New preference object for a user [admin, training]","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","properties":{"text":{"type":"string"},"classifiers":{"type":"array"},"source":{"type":"string"},"diseases":{"type":"array"},"methods":{"type":"array"},"reviewers":{"type":"array"},"doi":{"type":"string"},"_doc":{"type":"string"},"_id":{"type":"string"}},"example":{}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}}},"/training-data/{_id}":{"get":{"id":"_id","description":"Get a training object by ID","summary":"Get training object [admin]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}},"put":{"summary":"Update preferences [admin, training]","description":"Update a training object by ID","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}},"patch":{"id":"_id","summary":"Patch a training object [admin, training]","description":"Patch a training object by ID","parameters":[{"name":"object","description":"The preference ogject to create","required":true,"schema":{"properties":{"ersId":{"type":"integer"},"spotmeId":[],"_id":{"type":"string"},"layout":{"type":"string"},"notifications":[],"interests":[]},"example":{"ersId":"integer","spotMe":"string","layout":"string","notifications":[],"interests":[]},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","properties":{"layout":{"type":"string"},"ersId":{"type":"integer"},"_id":{"type":"string"}},"example":{"layout":"feed","ersId":200000,"_id":"59a9526c5fe1ea1b21dc5e04"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"security":[{"bearer":[]}],"produces":["application/json"],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}},"delete":{"id":"_id","description":"Remove a training object","summary":"Remove a training object [admin]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"security":[{"bearer":[]}],"tags":["training-data"],"consumes":["application/json"],"securityDefinitions":{}}},"/users":{"get":{"description":"List all users","summary":"list all users [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"parameters":[{"description":"Number of results to return","in":"query","name":"$limit","type":"integer"},{"description":"Number of results to skip","in":"query","name":"$skip","type":"integer"},{"description":"Property to sort results","in":"query","name":"$sort","type":"string"}],"tags":["users"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"Creates a new user of the API. Only administrators can create an account.","summary":"Create a new API user [admin role]","parameters":[{"name":"object","description":"The user to create","required":true,"schema":{"properties":{},"example":{"email":"user email","username":"username","password":"user password","permissions":"the permission the user is granted"},"type":"object"},"in":"body"}],"responses":{"201":{"description":"sucessful operation","schema":{"type":"object","example":{"email":"string","permissions":"string","_id":"string"}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["users"],"consumes":["application/json"],"securityDefinitions":{}}},"/users/{_id}":{"get":{"summary":"Get a user [owner]","description":"A user has the following properties: <ul>\n      <li>email</li>\n      <li>username</li>\n      <li>ersId</li>\n      <li><del>spotmeId</del>For now this is in the preferences object</li>\n      <li>key4Token</li>\n      <li>permissions</li>\n    </ul>","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"parameters":[{"description":"ID of users to return","in":"path","required":true,"name":"_id","type":"integer"}],"tags":["users"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"put":{"id":"_id","summary":"Update a user [owner]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["users"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"patch":{"id":"_id","summary":"Patch a user [owner]","parameters":[],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"description":"Updates the resource identified by id using data.","tags":["users"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"delete":{"description":"Remove a user","summary":"Remove a user [owner]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"parameters":[{"name":"id","description":"Id of the user to delete","required":true,"allowMultiple":false,"type":"string","in":"path"}],"produces":["application/json"],"security":[{"bearer":[]}],"tags":["users"],"consumes":["application/json"],"securityDefinitions":{}}},"/vision":{"get":{"description":"Returns all the article and video from ERS Vision","summary":"Get ERS Vision items","parameters":[{"name":"filterBy","description":"Allows to filter content based on diseases and methods, available seat, main-news, hightlights, no-hightlights:\n    <ul>\n      <li>main-news - returns the main news</li>\n      <li>hightlights - returns the \"highlights\" news, but excluedes the main one, or the \"pinned one\"</li>\n      <li>no-hightlights - returns items, but excludes the main new and highlighted ones, or the \"pinned ones\"</li>\n      <li>available-seat - returns only instances with available seat (not fully booked) </li>\n      <li>chain the diseases and methods that are needed separated by a comma: Airway diseases,Public health</li>\n    <ul>\n    __Note__: \n    <ul>\n      <li>main-news - cannot be chain with hightlights or no-hightlights</li>\n      <li>hightlights - cannot be chain with main-news or no-hightlights</li>\n      <li>no-hightlights - cannot be chain with hightlights or main-news</li>\n      <li>available-seat - can be chain with other king of filter separated by comma </li>\n      <li>diseases and methods - can be chain with other king of filter separated by comma</li>\n    <ul>\n    <pre><code>\n      ?filterBy=Airway diseases,Public health,available-seat\n    </code></pre>\n    ","required":false,"allowMultiple":false,"type":"string","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"limit","description":"the amount of items to return - max 100","required":false,"allowMultiple":false,"type":"integer","in":"query"},{"name":"skip","description":"the amount of items to skip (offset)","required":false,"allowMultiple":false,"type":"integer","in":"query"}],"responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"produces":["application/json"],"tags":["vision"],"consumes":["application/json"],"security":{},"securityDefinitions":{}}},"/vision/{slug}":{"get":{"id":"slug","description":"Returns a video from ERS Vision with all the associated text","summary":"Get an article from its slug/alias","parameters":[{"name":"slug","description":"the slug or alias that identifies a ressource","required":true,"allowMultiple":false,"type":"string","in":"path"},{"name":"full","description":"Parses the full item or only what is necessary for the preview, if not set 'fasle' is assumed","required":false,"allowMultiple":false,"type":"boolean","in":"query"},{"name":"format","description":"Set the type of textual content that can be formated in the CMS. If not set, 'html' is assumed: <ul>\n    <li>html</li>\n    <li>raw</li>\n    <li>markdown</li>\n    </ul>","required":false,"allowMultiple":false,"type":"string","in":"query","enum":["html","markdown","raw"]}],"responses":{"200":{"description":"sucessful operation","schema":{"type":"object","example":{"data":{},"status":200}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"tags":["vision"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}},"/webhook":{"get":{"description":"The webhook is used for notifications, cache invalidation messaging, start processes such as indexing, importing, etc... The webhook is meant mostly for internal use. If you think you need to use it, please contact the developer.","summary":"Handle a webhook payload [admin role]","responses":{"200":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"404":{"description":"not found - it aslo returns an empty data array ","schema":{"type":"object","properties":{"data":{"type":"array","items":{}},"message":{"type":"string"},"status":{"type":"string","enum":[404]}}}}},"security":[{"bearer":[]}],"parameters":[{"description":"Number of results to return","in":"query","name":"$limit","type":"integer"},{"description":"Number of results to skip","in":"query","name":"$skip","type":"integer"},{"description":"Property to sort results","in":"query","name":"$sort","type":"string"}],"tags":["webhook"],"consumes":["application/json"],"produces":["application/json"],"securityDefinitions":{}},"post":{"security":[{"bearer":[]}],"description":"The webhook is used for notifications, cache invalidation messaging, start processes such as indexing, importing, etc... The webhook is meant mostly for internal use. If you think you need to use it, please contact the developer.","summary":"Handle a webhook payload [admin role]","responses":{"201":{"description":"successful operation","schema":{"type":"object","example":{"data":[],"category":[],"_sys":{"next":"string","prev":"string","limit":"int","skip":"int","total":"int","status":"int"},"cache":{"cached":"boolean","duration":"int","expires_on":"string","parent":"string","group":"string","key":"string"}}}},"401":{"description":"Invalid login","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[401]},"className":{"type":"string"},"errors":{}}}}}},"409":{"description":"Conflict when creating the user","schema":{"type":"object","properties":{"name":{"type":"string"},"message":{"type":"string"},"code":{"type":"string","enum":[409]},"className":{"type":"string"},"errors":{}}}}},"produces":["application/json"],"tags":["webhook"],"consumes":["application/json"],"securityDefinitions":{}}},"/recommend":{"post":{"parameters":[{"in":"body","name":"body","required":true,"schema":{"$ref":"#/definitions/recommend"}}],"responses":{"201":{"description":"created"},"401":{"description":"not authenticated"},"500":{"description":"general error"}},"description":"Creates a new resource with data.","summary":"","tags":["recommend"],"consumes":["application/json"],"produces":["application/json"],"security":{},"securityDefinitions":{}}}},"definitions":{},"swagger":"2.0","schemes":["http"],"tags":[{"name":"authentication","description":"[API] Authentication service (need to request credentials)","externalDocs":{}},{"name":"app-community","description":"Get post for the app community","externalDocs":{}},{"name":"app-highlights","description":"ERS App Highlights","externalDocs":{}},{"name":"calendar","description":"Get the ERS Calendar","externalDocs":{}},{"name":"cpd","description":"Continuing Professional Development","externalDocs":{}},{"name":"congress","description":"Congress Programme","externalDocs":{}},{"name":"cme-online","description":"CME Online","externalDocs":{}},{"name":"courses","description":"ERS Courses","externalDocs":{}},{"name":"ers","description":"ERS contacts/users [MyERS, MyCRM]","externalDocs":{}},{"name":"feed","description":"Get all content","externalDocs":{}},{"name":"filters","description":"Built URL Filters ","externalDocs":{}},{"name":"highlights","description":"ERS highlights","externalDocs":{}},{"name":"interests","description":"ERS Interests","externalDocs":{}},{"name":"journals","description":"Journals [Beta]","externalDocs":{}},{"name":"leadership","description":"Get Leadership with DOI","externalDocs":{}},{"name":"metanav","description":"Get the ERS metanavigation","externalDocs":{}},{"name":"news","description":"Get ERS news","externalDocs":{}},{"name":"notification","description":"Notification","externalDocs":{}},{"name":"preferences","description":"Manage user's preferences","externalDocs":{}},{"name":"publications","description":"Publications","externalDocs":{}},{"name":"relatives","description":"Relatives","externalDocs":{}},{"name":"respiratory-digest","description":"Respiratory digest","externalDocs":{}},{"name":"respiratory-matters","description":"Respiratory Matters Blog","externalDocs":{}},{"name":"search","description":"Search (Alpha)","externalDocs":{}},{"name":"sleepandbreathing","description":"Sleep and Breathing","externalDocs":{}},{"name":"training-data","description":"Manage classifier training objects","externalDocs":{}},{"name":"users","description":"Users of the API","externalDocs":{}},{"name":"vision","description":"ERS Vision","externalDocs":{}},{"name":"webhook","description":"Webhook - mostly for internal use","externalDocs":{}},{"name":"recommend","description":"Recommend","externalDocs":{}}],"basePath":"","docsPath":"/docs","consumes":["application/json"],"produces":["application/json"],"info":{"title":"ERS API Documentation","description":"The ERS API provides an API to retrieve content and facilitate login with myERS","contact":{"email":"webmaster@ersnet.org"}},"ignore":{"tags":[]},"version":"0.1.2","uiIndex":"/home/clients/74d8b4b64a924ae990bc3821c8a5961d/api-uat/content/src/swagger/docs.html","securityDefinitions":{"bearer":{"type":"apiKey","name":"authorization","in":"header"}},"security":[{"bearer":[]}]}