{"info":{"_postman_id":"502c73e3-61a0-4bb2-a274-79293d20b1ad","name":"Docs OpenAPI","description":"<html><head></head><body><p>The following endpoints grant programmatic access to maize.PLUS open APIs.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"19850306","collectionId":"502c73e3-61a0-4bb2-a274-79293d20b1ad","publishedId":"VVBRznn4","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"000000"},"publishDate":"2022-09-20T09:37:20.000Z"},"item":[{"name":"Authentication","item":[{"name":"Auth","event":[{"listen":"test","script":{"id":"1acfb148-3a82-4b7c-b546-33a0f5e5a19a","exec":["var data = pm.response.json();","pm.environment.set(\"tenantToken\", data.access_token);","pm.environment.set(\"tenant_token\", data.access_token);"],"type":"text/javascript","packages":{}}}],"id":"18e71733-9660-459d-bd02-f43182aa23b4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"grant_type","value":"password","type":"text"},{"key":"client_id","value":"{{client_id}}","type":"text"},{"key":"client_secret","value":"{{client_secret}}","type":"text"},{"key":"username","value":"{{username}}","type":"text"},{"key":"password","value":"{{password}}","type":"text"},{"key":"scope","value":"*","type":"text"}]},"url":"https://open.maizeplus.io/oauth/token","urlObject":{"protocol":"https","path":["oauth","token"],"host":["open","maizeplus","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"18e71733-9660-459d-bd02-f43182aa23b4"}],"id":"72226342-8de4-481c-8359-864ee98a43cc","_postman_id":"72226342-8de4-481c-8359-864ee98a43cc","description":""},{"name":"Users management","item":[{"name":"Import Users","id":"51e17d02-79a0-4600-926b-d0afe2a1515f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenantToken}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"https://open.maizeplus.io/api/v1/import","description":"<p>This endpoint can be used to grant access to maize.PLUS to new users by providing an excel file containing the required data.</p>\n<p>Both xlsx and csv file formats are supported.</p>\n<p>csv files should have:</p>\n<ul>\n<li>separator: ; (semicolon)</li>\n<li>enclosure: \" (double-quote)</li>\n</ul>\n<p>Column names should be present and they are:</p>\n<ul>\n<li><em><strong>email</strong></em>: the user address and it is required, since it's considered the key of each row; it should be a valid email address</li>\n<li><em><strong>cid</strong></em>: the custom userid, which is required only if the tenant is integrated with an external customer system (such as a LMS)</li>\n<li><em><strong>first_name</strong></em>: the user's first name is a required field</li>\n<li><em><strong>last_name</strong></em>: the user's last name is a required field</li>\n<li><em><strong>enabled</strong></em>: optional flag which can be used to disable users from accessing the platform</li>\n<li><em><strong>language_id</strong></em>: user's preferred language (optional), otherwhise tenant language will be used; <a href=\"https://www.iso.org/iso-639-language-codes.html\">ISO-639 two chars language code</a></li>\n<li><em><strong>country_id</strong></em>: user's country (optional); <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO-3166 two chars country code</a></li>\n<li><em><strong>business_unit_code</strong></em>: required only if tenant supports business units</li>\n<li><em><strong>business_unit_name</strong></em>: required only if tenant supports business units</li>\n<li><em><strong>organizational_unit_code</strong></em>: required only if tenant supports organizational units</li>\n<li><em><strong>organizational_unit_name</strong></em>: required only if tenant supports organizational units</li>\n<li><em><strong>parent_organizational_unit_code</strong></em>: it can be used only if tenant supports organizational units; in this case for each unit must be declared also its parent code (if present)</li>\n</ul>\n<p>It is <strong>not possible to delete users</strong> using this endpoint: we consider the <em>email</em> attribute as identifier and there can be two cases:</p>\n<ul>\n<li>the email is not already present: a new record for the user is created.</li>\n<li>the email is already present: data associated to that user will be overridden.</li>\n</ul>\n<p>A user can be disabled (or enabled) using the optional enabled column, which can accept only \"true\" or \"false\" values.</p>\n<p>If the user limit of the tenant is reached, the column is always ignored, since all the new users can't be enabled. Otherwhise:</p>\n<ul>\n<li>if the column is not present, the row is treated like a enabled user</li>\n<li>if the column is present, the row is enabled or disabile according to its value</li>\n</ul>\n<p>Users present in the system but absent from the file will be ignored.</p>\n<p>Therefore we recommend to <strong>import only new or updated users</strong> and avoid to upload the entire list of existing users every time.</p>\n<p>The API returns a json object with the following format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": {\n        \"uuid\": \"97b2962c-78e8-486c-889b-f97fb409f2b1\",\n        \"status\": \"running\",\n        \"started_at\": \"2022-11-08T18:39:54.000000Z\",\n        \"finished_at\": null\n    }\n}\n\n</code></pre>\n<p>The <strong>data.uuid</strong> is the key to access to the Import Status API, to monitor the status of the import process, which is asynchronous. Other fields represents useful metadata. Please note that for convenience finished_at field has always null values.</p>\n<p>This API is asynchronous and when the import process is completed a report mail is sent to our technical team. Receiving the mail means that the import process is completed. A file errors.json is attached to the mail, containing the rows which wasn't valid.</p>\n<p>If required the report mail can be sent to many custom receivers. Other channels to receive the report can be integrated.</p>\n","urlObject":{"protocol":"https","path":["api","v1","import"],"host":["open","maizeplus","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"51e17d02-79a0-4600-926b-d0afe2a1515f"},{"name":"Import Status","id":"12b9dee1-4ba9-4dc8-a5a9-b94df8db6b01","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenantToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"https://open.maizeplus.io/api/v1/import/latest/status","description":"<p>This endpoint can be used to monitor the status of the process for Import Users batch process.</p>\n<p>To understand how to import user see the Import User's endpoint documentation.</p>\n<p>The API can also be invoked providing the Import User job uuid, as returned by the Import User Api. Otherwise it will return the latest job info.</p>\n<p><code>https://open.maizeplus.io/api/v1/import/{{uuid}}/status</code></p>\n<p>The result is a JSON object, with the following format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": {\n        \"uuid\": \"97b2962c-78e8-486c-889b-f97fb409f2b1\",\n        \"status\": \"failed\",\n        \"started_at\": \"2022-11-08T18:39:54.000000Z\",\n        \"finished_at\": \"2022-11-08T18:39:56.000000Z\"\n    }\n}\n\n</code></pre>\n<p>The relevant fields are:</p>\n<ul>\n<li><strong>status</strong>: always present, indicates if the job is running, completed or failed</li>\n<li><strong>started_at</strong>: if present, it means that the job is started at that given time</li>\n<li><strong>finished_at</strong>: if present, it means that the job is completed at that given time</li>\n</ul>\n<p>The <strong>data.status</strong> can be one of the following:</p>\n<ul>\n<li><strong>completed</strong>: the process is completed without errors;</li>\n<li><strong>completed_with_errors</strong>: the process is completed but some non-blocking errors were found in the csv (typically an invalid row); errors can be discoverd with the Import Errors API</li>\n<li><strong>failed</strong>: the process was interrupted because of blocking error (for example the input wasn't valid at all)</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","import","latest","status"],"host":["open","maizeplus","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"12b9dee1-4ba9-4dc8-a5a9-b94df8db6b01"},{"name":"Import Errors","id":"312f549e-b431-45fa-88a4-813800004c34","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenantToken}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"https://open.maizeplus.io/api/v1/import/latest/errors?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list the errors occurred on a completed job for Import Users batch process.</p>\n<p>The API is paginated, beacuse some jobs can have many errors. The pagination parameters are:</p>\n<ul>\n<li>page: indicates the page number</li>\n<li>limit: indicates the maximum results returned for each page</li>\n</ul>\n<p>To understand how to import user see the Import User's endpoint documentation.</p>\n<p>The API can also be invoked providing the Import User job uuid, as returned by the Import User Api. Otherwise it will return the latest job info.</p>\n<p><code>https://open.maizeplus.io/api/v1/import/{{uuid}}/errors?page=1&amp;limit=100</code></p>\n<p>The result is a JSON object, with the following format:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"data\": {\n    \"errors\": [\n        {\n            \"row\": 2,\n            \"errors\": {\n                \"email\": [\n                    \"The selected email does not have a valid domain.\"\n                ]\n            },\n            \"validated_at\": \"2022-11-08 18:39:54\"\n        },\n        {...},\n        ...\n    ],\n}\n\n</code></pre>\n<p>The errors field contains a list of rows, which generated one or more error.</p>\n<p>The relevant fields for each data.error are:</p>\n<ul>\n<li><strong>row</strong>: always present, represents the row id in the CSV (i.e. the line number)</li>\n<li><strong>errors</strong>: contains the fields which are not valid, each one with an error message</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","import","latest","errors"],"host":["open","maizeplus","io"],"query":[{"key":"page","value":"{{page_number}}"},{"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"312f549e-b431-45fa-88a4-813800004c34"},{"name":"Delete Users","id":"39074b40-a26c-416f-afd0-a7c94923b450","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenantToken}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"x-is-sticky-connection","value":"true","type":"text"}],"body":{"mode":"urlencoded","urlencoded":[{"key":"emails[]","value":"test-import2@example.com","type":"text"},{"key":"emails[]","value":"test-import1@example.com","type":"text"}]},"url":"https://open.maizeplus.io/api/v1/users","description":"<p>This endpoint can be used to remove the access to maize.PLUS to a subset of users identified by their emails.</p>\n<p>If successful the API returns HTTP code 204.</p>\n<p>If at least one of the users is not present in the systems, the API doesn't deactivate any user and returns HTTP code 404.</p>\n<p>Please pay attention that users are only deactivated and therefore can be restored.</p>\n<p>If a user is disabled with this API can't be restored with the import API, but a custom request should be sent to our technical team.</p>\n","urlObject":{"protocol":"https","path":["api","v1","users"],"host":["open","maizeplus","io"],"query":[],"variable":[]}},"response":[],"_postman_id":"39074b40-a26c-416f-afd0-a7c94923b450"}],"id":"42422ea0-092e-4367-a1f4-82e66415023a","_postman_id":"42422ea0-092e-4367-a1f4-82e66415023a","description":""},{"name":"Data export","item":[{"name":"Users","id":"cda450b7-fb45-468f-93e8-07f54ff1b649","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/users?page={{page_number}}&limit={{page_size}}&include=language,country,organizationalUnit.businessUnit","description":"<p>This endpoint can be used to list all users of the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>You may include the users' language, country, organizational unit, and business unit using the optional <code>include</code> query string key, where the value should contain:</p>\n<ul>\n<li><code>language</code> to include user's language code and name</li>\n<li><code>country</code> to include user's country code and name</li>\n<li><code>organizationalUnit</code> to include user's organizational unit code and name</li>\n<li><code>organizationalUnit.businessUnit</code> to include both user's organizational unit and business unit code and name</li>\n</ul>\n<p>All relations you want to include should be separated by a comma, a shown in the example request.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"uuid\": \"b42c8f02-24e6-4fdf-a2ba-e17f87ac4ce0\",\n            \"cid\": \"test-user\",\n            \"first_name\": \"Test\",\n            \"last_name\": \"User\",\n            \"email\": \"test-user@example.com\",\n            \"language\": {\n                \"code\": \"it\",\n                \"name\": \"Italiano\"\n            },\n            \"country\": {\n                \"code\": \"IT\",\n                \"name\": \"Italy\"\n            },\n            \"organizational_unit\": {\n                \"code\": \"OUC\",\n                \"name\": \"Organizational Unit Code\",\n                \"business_unit\": {\n                    \"code\": \"BUC\",\n                    \"name\": \"Business Unit Code\"\n                }\n            },\n            \"enabled\": 1\n        },\n        {...},\n        ...\n    ],\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"per_page\": 48,\n        \"to\": 5,\n        \"total\": 5\n    }\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","users"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"},{"key":"include","value":"language,country,organizationalUnit.businessUnit"}],"variable":[]}},"response":[],"_postman_id":"cda450b7-fb45-468f-93e8-07f54ff1b649"},{"name":"Topics","id":"7c2597fc-5272-4e25-9504-37e097f2b272","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/topics?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list all the available topics for the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"perferendis\"\n        },\n        {...},\n        ...\n    ],\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"per_page\": 48,\n        \"to\": 5,\n        \"total\": 5\n    }\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","topics"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"7c2597fc-5272-4e25-9504-37e097f2b272"},{"name":"Courses","id":"add90cd2-00af-4339-b9b8-0515b3722284","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/courses?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list all the available courses for the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"duration\": 99,\n            \"level\": \"basic\",\n            \"name\": \"accusamus\",\n            \"description\": \"Sed consectetur et ipsa officiis. Placeat sapiente alias minima ipsum.\",\n            \"short_description\": \"Nam quibusdam dolore iste quis optio sed velit quam. Eveniet illum sed architecto fuga voluptatem.\",\n            \"topic_id\": 2\n        },\n        {...},\n        ...\n    ],\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"per_page\": 48,\n        \"to\": 5,\n        \"total\": 5\n    }\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","courses"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"add90cd2-00af-4339-b9b8-0515b3722284"},{"name":"Progress Courses","id":"7bb575d1-f650-466f-a3a2-baf4267a7206","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/progress-courses?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list all the available course progresses for all the user for the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"user\": {\n                \"uuid\": \"d7e3d220-656c-4941-a887-b51c3caf0e57\"\n            },\n            \"course_id\": 1,\n            \"started_at\": \"2022-11-09T14:46:03.000000Z\",\n            \"finished_at\": null,\n            \"progress\": \"started\"\n        }\n        {...},\n        ...\n    ],\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"per_page\": 48,\n        \"to\": 5,\n        \"total\": 5\n    }\n}\n\n</code></pre>\n<p>The <strong>started_at</strong> field can't be null.</p>\n<p>The <strong>finished_at</strong> field is null if the <strong>progress</strong> is <em>started</em>.</p>\n<p>The <strong>progress</strong> can be <em>started</em> or <em>completed</em>.</p>\n<p>The user object contains only a uuid field, which is the key for join with the user data.</p>\n","urlObject":{"protocol":"https","path":["api","v1","progress-courses"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"7bb575d1-f650-466f-a3a2-baf4267a7206"},{"name":"Certifications","id":"b1811bcd-6828-40b3-8c19-740cbe5a79c9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/certifications?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list all the available certifications for the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Let's think like a designer!\"\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Are you a Data Expert?\"\n        },\n        {\n            \"id\": 3,\n            \"name\": \"Do you know what's happening to customers?\"\n        },\n        {\n            \"id\": 4,\n            \"name\": \"Are you really innovative?\"\n        },\n        {\n            \"id\": 5,\n            \"name\": \"How many realities do you know?\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://open.maizeplus.io/api/v1/certifications?page=1\",\n        \"last\": \"https://open.maizeplus.io/api/v1/certifications?page=1\",\n        \"prev\": null,\n        \"next\": null\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"« Previous\",\n                \"active\": false\n            },\n            {\n                \"url\": \"https://open.maizeplus.io/api/v1/certifications?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": null,\n                \"label\": \"Next »\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"https://open.maizeplus.io/api/v1/certifications\",\n        \"per_page\": 100,\n        \"to\": 13,\n        \"total\": 13\n    }\n}\n\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","certifications"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"b1811bcd-6828-40b3-8c19-740cbe5a79c9"},{"name":"Progress Certifications","id":"35432bab-8977-4e46-a0b1-6c2197c54970","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{tenant_token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"},{"key":"x-is-sticky-connection","value":"true","type":"text"}],"url":"https://open.maizeplus.io/api/v1/progress-certifications?page={{page_number}}&limit={{page_size}}","description":"<p>This endpoint can be used to list all the available certification progresses for all the user for the selected tenant.</p>\n<p>The only parameter required is <strong>page_number</strong>, to request a page of data.</p>\n<p>The <strong>page_size</strong> parameter defines the maximum number of results per page. The parameter cannot be set to a value greater than <strong>100</strong>.</p>\n<p>The output format is as follows:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n    \"data\": [\n        {\n            \"user\": {\n                \"uuid\": \"149f723d-5ef1-404d-88f4-c7406c0b2b16\"\n            },\n            \"certification_id\": 1,\n            \"started_at\": \"2024-06-13T14:56:29.000000Z\",\n            \"finished_at\": \"2024-06-13T14:56:29.000000Z\",\n            \"progress\": \"completed\",\n            \"score\": 100,\n            \"score_avg\": \"80.00\",\n            \"attempts\": 2\n        }\n    ],\n    \"links\": {\n        \"first\": \"https://open.maizeplus.io/api/v1/progress-certifications?page=1\",\n        \"last\": \"https://open.maizeplus.io/api/v1/progress-certifications?page=1\",\n        \"prev\": null,\n        \"next\": null\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"links\": [\n            {\n                \"url\": null,\n                \"label\": \"« Previous\",\n                \"active\": false\n            },\n            {\n                \"url\": \"https://open.maizeplus.io/api/v1/progress-certifications?page=1\",\n                \"label\": \"1\",\n                \"active\": true\n            },\n            {\n                \"url\": null,\n                \"label\": \"Next »\",\n                \"active\": false\n            }\n        ],\n        \"path\": \"https://open.maizeplus.io/api/v1/progress-certifications\",\n        \"per_page\": 100,\n        \"to\": 1,\n        \"total\": 1\n    }\n}\n\n</code></pre>\n<p>The <strong>started_at</strong> field can't be null.</p>\n<p>The <strong>finished_at</strong> field is null if the <strong>progress</strong> is <em>started</em>.</p>\n<p>The <strong>progress</strong> can be <em>started</em> or <em>completed</em>.</p>\n<p>The <strong>score</strong> is the last score obtained after the quiz.</p>\n<p>The <strong>attempts</strong> counts the number of times the user has tried to pass the test.</p>\n<p>The <strong>score_avg</strong> is the average of all the test scores.</p>\n<p>The user object contains only a uuid field, which is the key for join with the user data.</p>\n","urlObject":{"protocol":"https","path":["api","v1","progress-certifications"],"host":["open","maizeplus","io"],"query":[{"description":{"content":"<p>integer greater than or equal to 1</p>\n","type":"text/plain"},"key":"page","value":"{{page_number}}"},{"description":{"content":"<p>integer between 1 and 100</p>\n","type":"text/plain"},"key":"limit","value":"{{page_size}}"}],"variable":[]}},"response":[],"_postman_id":"35432bab-8977-4e46-a0b1-6c2197c54970"}],"id":"972c678a-e78d-4ea0-8a7b-02255098b9b9","_postman_id":"972c678a-e78d-4ea0-8a7b-02255098b9b9","description":""}]}