{
  "item": [
    {
      "name": "Refresh API Key",
      "description": "To authenticate your requests to the API you must have an API Key. An API key can be generated by making a request using the Base URL, Tenancy ID, Username and Initial Refresh Token provided by Acorn.\n\n### Important\n\nThe API Key and Refresh Token should be stored in a secure location once received. Each API Key is only valid for 24 hours. The most recent Refresh Token can be used to request a new API Key and Refresh Token anytime. Requesting a new API Key and Refresh Token will cause the previous API Key and Refresh Token to become invalid.\n\n### Avoiding common refresh failures\n\n- **The Refresh Token is single-use.** Every successful refresh rotates both values \u2014 persist the new pair *before* making any other request, and never reuse the old pair afterwards.\n- **Refresh from one place only.** If two workers (or two environments sharing one credential) refresh concurrently, whichever finishes second is holding a superseded token and every call it makes will fail with 401. Give each integration its own API username, or centralise the refresh in a single scheduled job.\n- **The `username` must match.** The token is looked up together with the API username it was issued for \u2014 a valid token with a different or missing `username` returns 401.\n- **A failed refresh does not invalidate anything.** Rotation only happens on success, so after a 401 your most recently *stored* pair is still the live one. A 401 means the token you presented has been superseded \u2014 usually by another refresh elsewhere. If the current pair is genuinely lost, contact [Acorn Support](https://help.acorn.works) for a new Initial Refresh Token.\n\nRequests to all API endpoints will not be authenticated if a user-agent is not specified in the request headers. To ensure that your requests are authenticated, please include a user-agent in the request headers. If a user-agent is not provided, the API will return a 403 Forbidden error.",
      "item": [
        {
          "id": "aa1e1139-ae96-426f-8704-2dc21e2db2de",
          "name": "Refresh API Key",
          "request": {
            "name": "Refresh API Key",
            "description": {
              "content": "To authenticate your requests to the API you must have an API Key. An API key can be generated by making a request using the Base URL, Tenancy ID, Username and Initial Refresh Token provided by Acorn. The example values are masked (`\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022`) \u2014 the live response contains the full API key and refresh token.\n\nEach successful call rotates **both** values: the returned `api_key` and `refresh_token` replace the previous pair, which stops working immediately. Persist the new pair before making any other request, and only refresh from a single place \u2014 concurrent refreshes leave one caller holding a dead token.\n\nA `401 Unauthorized` means the refresh token you presented has been superseded (or the `username`/tenancy don't match the token). A failed call never invalidates the current pair, so retrying with the same stale token will keep failing \u2014 recover your most recently stored pair, or contact Acorn Support for a new Initial Refresh Token.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "apikeys"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) string - required, the API username provided by Acorn Support when your API access is set up",
                    "type": "text/plain"
                  },
                  "key": "username",
                  "value": "{{username}}"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": {
              "type": "bearer",
              "bearer": [
                {
                  "key": "token",
                  "value": "{{refresh_token}}",
                  "type": "string"
                }
              ]
            }
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "apikeys"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) string - required, the API username provided by Acorn Support when your API access is set up",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "{{username}}"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"success\": true,\n    \"api_key\": \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u20223e19\",\n    \"expires_in\": 86400,\n    \"refresh_token\": \"\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022\\u2022816d\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Unauthorized Example (401 Unauthorized)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "apikeys"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) string - required, the API username provided by Acorn Support when your API access is set up",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "{{username}}"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "text/plain"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                }
              ],
              "body": "Unauthorized.",
              "cookie": [],
              "_postman_previewlanguage": "text"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "const json = pm.response.json();",
                  "if (json && json.api_key) {",
                  "    pm.environment.set('api_key', json.api_key);",
                  "    pm.environment.set('refresh_token', json.refresh_token);",
                  "}"
                ]
              }
            }
          ],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Activity Completions ",
      "description": "Activity Completions include all current and archived completion records for activities within content. Each activity completion record includes details about the user, the content, and the activity that was completed.",
      "item": [
        {
          "id": "d1314168-868e-4118-bddf-31e3e76af152",
          "name": "Activity Completions",
          "request": {
            "name": "Activity Completions",
            "description": {
              "content": "Activity Completions include all current and archived completion records for activities within content. Each activity completion record includes details about the user, the content, and the activity that was completed.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "activitycompletions"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12356"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "Integer - optional, if included the endpoint will only return results with the specified activityid.",
                    "type": "text/plain"
                  },
                  "key": "activityId",
                  "value": "123"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) integer - required, if included the endpoint will only return results with the specified contentid. Optional if userId is provided.",
                    "type": "text/plain"
                  },
                  "key": "contentId",
                  "value": "123"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) integer - required, if included the endpoint will only return results with the specified userid. Optional if contentId is provided.",
                    "type": "text/plain"
                  },
                  "key": "userId",
                  "value": "1236"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter the results by content type. Available values: Course, Live Learning",
                    "type": "text/plain"
                  },
                  "key": "contentType",
                  "value": "Course"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true suspended users will be included",
                    "type": "text/plain"
                  },
                  "key": "showSuspended",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true completion records will include all custom user fields in a `userdata` object on each record.",
                    "type": "text/plain"
                  },
                  "key": "userFields",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "activitycompletions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12356"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "Integer - optional, if included the endpoint will only return results with the specified activityid.",
                        "type": "text/plain"
                      },
                      "key": "activityId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified contentid. Optional if userId is provided.",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified userid. Optional if contentId is provided.",
                        "type": "text/plain"
                      },
                      "key": "userId",
                      "value": "1236"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by content type. Available values: Course, Live Learning",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "Course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields in a `userdata` object on each record.",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12345,\n    \"data\": [\n        {\n            \"userid\": 456,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"activityid\": 789,\n            \"activityname\": \"Quiz 1\",\n            \"activitytimecompleted\": \"2024-01-15T10:30:00+00:00\",\n            \"activitycompletionstatus\": \"Completed\",\n            \"contentid\": 123,\n            \"contenttype\": \"Course\",\n            \"contentname\": \"Introduction to Safety\",\n            \"userdata\": {\n                \"Department\": \"Finance\",\n                \"Location\": \"Darwin\"\n            }\n        },\n        {\n            \"userid\": 457,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"activityid\": 789,\n            \"activityname\": \"Quiz 1\",\n            \"activitytimecompleted\": \"2024-01-15T14:45:00+00:00\",\n            \"activitycompletionstatus\": \"Completed\",\n            \"contentid\": 123,\n            \"contenttype\": \"Course\",\n            \"contentname\": \"Introduction to Safety\",\n            \"userdata\": {\n                \"Department\": \"People and Culture\",\n                \"Location\": \"Canberra\"\n            }\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "activitycompletions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12356"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "Integer - optional, if included the endpoint will only return results with the specified activityid.",
                        "type": "text/plain"
                      },
                      "key": "activityId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified contentid. Optional if userId is provided.",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified userid. Optional if contentId is provided.",
                        "type": "text/plain"
                      },
                      "key": "userId",
                      "value": "1236"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by content type. Available values: Course, Live Learning",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "Course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields in a `userdata` object on each record.",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12345\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Error Example - Missing Filter (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "activitycompletions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12356"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "Integer - optional, if included the endpoint will only return results with the specified activityid.",
                        "type": "text/plain"
                      },
                      "key": "activityId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified contentid. Optional if userId is provided.",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "123"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, if included the endpoint will only return results with the specified userid. Optional if contentId is provided.",
                        "type": "text/plain"
                      },
                      "key": "userId",
                      "value": "1236"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by content type. Available values: Course, Live Learning",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "Course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields in a `userdata` object on each record.",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"requestid\": 12345,\n    \"errors\": {\n        \"exception\": \"Either a userId or contentId filter must be provided.\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Attendance ",
      "description": "Attendance records include all attendance within Live Learnings (face-to-face sessions). Each attendance record includes details about the user, the Live Learning, the session date, and the attendance status.",
      "item": [
        {
          "id": "9c7ea1e0-eb7f-4c7a-a7ec-ec3cc29730e9",
          "name": "Attendance",
          "request": {
            "name": "Attendance",
            "description": {
              "content": "Attendance records include all attendance within Live Learnings (face-to-face sessions). Each attendance record includes details about the user, the Live Learning, the session date, and the attendance status.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "attendance"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12345"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true suspended users will be included",
                    "type": "text/plain"
                  },
                  "key": "showSuspended",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true attendance records will include all custom user fields. Adds a `userdata` object to each record",
                    "type": "text/plain"
                  },
                  "key": "userFields",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true attendance records will include all custom content fields. Adds a `contentdata` object to each record",
                    "type": "text/plain"
                  },
                  "key": "contentFields",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true attendance records will include all custom session fields. Adds a `sessiondata` object to each record",
                    "type": "text/plain"
                  },
                  "key": "sessionFields",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by Live Learning content ID",
                    "type": "text/plain"
                  },
                  "key": "contentId",
                  "value": "1236"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "attendance"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom user fields. Adds a `userdata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom content fields. Adds a `contentdata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom session fields. Adds a `sessiondata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "sessionFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by Live Learning content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1236"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12346,\n    \"data\": [\n        {\n            \"userid\": 456,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"contentid\": 234,\n            \"sessionid\": 101,\n            \"contenttype\": \"Live Learning\",\n            \"contentname\": \"First Aid Training\",\n            \"eventname\": \"February Session\",\n            \"sessiontype\": \"Face to Face\",\n            \"sessionstarttime\": \"2024-02-20T09:00:00+00:00\",\n            \"sessionendtime\": \"2024-02-20T17:00:00+00:00\",\n            \"attendancestatus\": \"Attended\",\n            \"note\": null,\n            \"userdata\": {\n                \"Department\": \"Finance\",\n                \"Location\": \"Darwin\"\n            },\n            \"contentdata\": {\n                \"Delivery_Mode\": \"In person\"\n            },\n            \"sessiondata\": {\n                \"Catering\": \"Provided\"\n            }\n        },\n        {\n            \"userid\": 457,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"contentid\": 234,\n            \"sessionid\": 101,\n            \"contenttype\": \"Live Learning\",\n            \"contentname\": \"First Aid Training\",\n            \"eventname\": \"February Session\",\n            \"sessiontype\": \"Face to Face\",\n            \"sessionstarttime\": \"2024-02-20T09:00:00+00:00\",\n            \"sessionendtime\": \"2024-02-20T17:00:00+00:00\",\n            \"attendancestatus\": \"Did Not Attend\",\n            \"note\": null,\n            \"userdata\": {\n                \"Department\": \"People and Culture\",\n                \"Location\": \"Canberra\"\n            },\n            \"contentdata\": {\n                \"Delivery_Mode\": \"In person\"\n            },\n            \"sessiondata\": {\n                \"Catering\": \"Provided\"\n            }\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "attendance"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom user fields. Adds a `userdata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom content fields. Adds a `contentdata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true attendance records will include all custom session fields. Adds a `sessiondata` object to each record",
                        "type": "text/plain"
                      },
                      "key": "sessionFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by Live Learning content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1236"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12346\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Content ",
      "description": "Content includes all content within the LMS. The primary use of this endpoint is to retrieve content IDs for use with other endpoints.",
      "item": [
        {
          "id": "3a8b3b84-a45a-4035-88be-48089444ea6b",
          "name": "Content",
          "request": {
            "name": "Content",
            "description": {
              "content": "Content includes all content within the LMS. The primary use of this endpoint is to retrieve content IDs for use with other endpoints. `customfields` lists every content custom field configured for the tenancy as `{name, data}` pairs \u2014 `data` is `\"\"` when the field has no value, and date-type fields are ISO 8601 when set.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "content"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "123456"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter results by content type. Available values: course, live learning, resource, video",
                    "type": "text/plain"
                  },
                  "key": "contentType",
                  "value": "course"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by specific content ID",
                    "type": "text/plain"
                  },
                  "key": "contentId",
                  "value": "123"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "content"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "123456"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type. Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "123"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12347,\n    \"data\": [\n        {\n            \"fullname\": \"Introduction to Safety\",\n            \"contentid\": 123,\n            \"contenttype\": \"Course\",\n            \"description\": \"<p>A comprehensive introduction to workplace safety.</p>\",\n            \"summary\": \"<p>A comprehensive introduction to workplace safety.</p>\",\n            \"totalenrolments\": 150,\n            \"totalcompletions\": 96,\n            \"status\": \"Active\",\n            \"cost\": 100000,\n            \"duration\": null,\n            \"programs\": [],\n            \"category\": null,\n            \"tags\": [],\n            \"customfields\": [\n                {\n                    \"name\": \"Language\",\n                    \"data\": \"English\"\n                },\n                {\n                    \"name\": \"Review Due\",\n                    \"data\": \"\"\n                }\n            ],\n            \"timecreated\": \"2023-06-15T08:00:00+00:00\",\n            \"timemodified\": \"2024-01-10T14:30:00+00:00\",\n            \"paymentCost\": {\n                \"finalCost\": 10000,\n                \"applicationId\": 95,\n                \"discount\": {\n                    \"success\": true,\n                    \"errors\": \"No discount found.\",\n                    \"discount\": null,\n                    \"discountedPrice\": 10000,\n                    \"originalPrice\": 10000,\n                    \"discountedAmount\": 0,\n                    \"currency\": \"AUD\"\n                }\n            }\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "content"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "123456"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type. Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "123"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12347\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "0cbbe7f5-863b-4111-a1d6-f767cc88beb6",
          "name": "Create Bookmark",
          "request": {
            "name": "Create Bookmark",
            "description": {
              "content": "Create a bookmark for a user on a specific piece of content.\n\n### Request Body\n\n- `username` \u2014 **Required** string of the username.\n- `contentId` \u2014 **Required** integer ID of the content to bookmark.\n- `contentType` \u2014 **Required** string type of content (course, live learning, etc.).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_administration",
                "index.php",
                "api",
                "1.2",
                "bookmarks",
                "{{tenancy_id}}"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"sherlock.holmes@example.com\",\n  \"contentId\": 123,\n  \"contentType\": \"course\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_administration",
                    "index.php",
                    "api",
                    "1.2",
                    "bookmarks",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"sherlock.holmes@example.com\",\n  \"contentId\": 123,\n  \"contentType\": \"course\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"success\": true,\n    \"bookmark\": {\n        \"userid\": 456,\n        \"bookmarkable_type\": \"CourseManagement\\\\Course\",\n        \"bookmarkable_id\": 123,\n        \"central_content_id\": 789,\n        \"updated_at\": \"2024-01-21T12:30:00.000000Z\",\n        \"created_at\": \"2024-01-21T12:30:00.000000Z\",\n        \"id\": 10001\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Completions ",
      "description": "Completions include all current and archived completions within the LMS. Each completion record includes details about the user and the piece of content that was completed.",
      "item": [
        {
          "id": "0d992ff9-7dc4-4bc2-8d92-f19bccdc19a9",
          "name": "Completions",
          "request": {
            "name": "Completions",
            "description": {
              "content": "The completions endpoint is a **change feed** of completion records \u2014 every current and archived\ncompletion in the LMS, ordered by when each record last changed (oldest first). Each record\nincludes details about the user and the piece of content that was completed, and carries a stable\nidentity (`completionid`) to upsert on.\n\nResponses are always synchronous and always cursor-paginated. Sync once, then keep polling a\ncursor to receive only what changed since your last call.\n\n### Consumer lifecycle\n\n1. **First sync** \u2014 call the endpoint (optionally with `updatedSince` to skip old history) and\n   follow `next_page_url` until `next_cursor` is `null`.\n2. **Forever after** \u2014 keep the last non-null cursor and poll it on your schedule. New and\n   changed records flow through it. An empty `data` array means \"nothing new yet\": keep polling\n   the same cursor.\n3. **Recovery** \u2014 if a cursor is rejected, restart from `updatedSince` with your last known-good\n   time. To deliberately re-read older data, drop the cursor and use `updatedSince` alone.\n\n### Feed semantics\n\n- **Changes appear with up to ~60 seconds of delay.** Records are deliberately withheld until\n  in-flight database transactions and replication have settled \u2014 a fixed, small settling window\n  that guarantees a cursor position can never be overtaken. Nothing is ever skipped.\n- **The same `completionid` can be delivered more than once.** A record that changes while you\n  are walking the feed moves to the unvisited tail and is re-delivered. Upsert on\n  `completionid`; never append.\n- **A cursor is a position, not a saved query.** It records how far through the feed you have\n  read (by change time) and nothing else \u2014 filters such as `contentType` or `contentId` are not\n  baked into it, so use the same query parameters for every request in a sync. Changing filters\n  mid-sync changes which records the feed returns from your position onwards.\n- **`cursor` and `updatedSince` compose as an intersection** \u2014 whichever is further ahead wins.\n- **Deletions are not reported.** User deletion and content deletion remove records from the\n  feed without notice \u2014 sync the user accounts and content endpoints for lifecycle events. An\n  account merge retires the merged user's completion ids and issues new ones under the\n  surviving user.\n- **A re-enrolment creates a new record** with a new `completionid`; the archived record keeps\n  its id.\n\n### Response fields\n\n- `completionid` \u2014 the stable identity of a completion record; upsert on it.\n- `lastupdated` \u2014 when the record's data last changed; this is why the record appears in a\n  filtered response. Emitted in `Z` form, so it can be passed directly as `updatedSince`.\n- `timeenrolled`, `timestarted`, `timecompleted`, `expiry` \u2014 use `+00:00` offset notation,\n  unchanged from v1.1 for compatibility. Both notations are UTC. When empty these fields are\n  `\"\"` (empty string), never null.\n- `certificateid` \u2014 absent (the key is removed, not null) on Video and Resource records.\n- `completionstatus` \u2014 one of `Completed`, `In Progress`, `Enrolled`, `Archived`, `Viewed`,\n  and `Did Not Complete` (only when the tenancy's did-not-complete feature is enabled).\n- `next_cursor` / `next_page_url` \u2014 `null` exactly when nothing lies beyond this page.\n  `next_page_url` carries your full query \u2014 the cursor, `updatedSince`, and any filters you\n  sent \u2014 so following links needs no parameter assembly.\n- `contenttype` \u2014 one of `Course`, `Live Learning`, `Video`, `Resource`.\n\n### Errors\n\nValidation problems return the standard envelope with `status: \"Failed\"` and an `errors` object\nkeyed by parameter \u2014 see the response examples. A rejected cursor is recoverable: restart from\n`updatedSince`.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "completions"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                    "type": "text/plain"
                  },
                  "key": "updatedSince",
                  "value": "2026-01-01T00:00:00Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                    "type": "text/plain"
                  },
                  "key": "limit",
                  "value": "50"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                    "type": "text/plain"
                  },
                  "key": "cursor",
                  "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true suspended users will be included",
                    "type": "text/plain"
                  },
                  "key": "showSuspended",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                    "type": "text/plain"
                  },
                  "key": "includeEnrolments",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true completion records will include all custom user fields",
                    "type": "text/plain"
                  },
                  "key": "userFields",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true custom course fields for courses will be included",
                    "type": "text/plain"
                  },
                  "key": "contentFields",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by specific content ID",
                    "type": "text/plain"
                  },
                  "key": "contentId",
                  "value": "1234"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                    "type": "text/plain"
                  },
                  "key": "contentType",
                  "value": "course"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                    "type": "text/plain"
                  },
                  "key": "showNotCompleted",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": [\n        {\n            \"completionid\": 1392,\n            \"userid\": 3,\n            \"username\": \"user@example.com\",\n            \"contentid\": 46,\n            \"contentname\": \"Course name\",\n            \"certificateid\": \"C8832PIYAI4\",\n            \"comment\": null,\n            \"lastupdated\": \"2026-07-21T02:50:59Z\",\n            \"timeenrolled\": \"2018-11-29T10:30:02+00:00\",\n            \"timestarted\": \"2018-11-29T10:30:04+00:00\",\n            \"timecompleted\": \"2018-11-29T10:30:04+00:00\",\n            \"contenttype\": \"Course\",\n            \"completionstatus\": \"Completed\",\n            \"expiry\": \"2019-05-29T10:30:04+00:00\",\n            \"userdata\": {\n                \"Department\": \"Finance\",\n                \"Location\": \"Darwin\"\n            },\n            \"contentdata\": {\n                \"Delivery_Mode\": \"In person\"\n            }\n        }\n    ],\n    \"next_cursor\": \"eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi...\",\n    \"next_page_url\": \"https://example.acornplms.com/local/acorn_tenancymanagement/index.php/api/1.2/tenancies/1/completions?cursor=eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi...\",\n    \"prev_page_url\": null\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Empty Page \u2014 nothing new yet (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": [],\n    \"next_cursor\": null,\n    \"next_page_url\": null,\n    \"prev_page_url\": null\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error \u2014 updatedSince (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"updatedSince\": [\n            \"The updatedSince must be an ISO 8601 UTC timestamp. Expected: Y-m-d\\\\TH:i:s\\\\Z\"\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error \u2014 cursor (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"cursor\": [\n            \"The cursor is invalid or has expired. Restart from updatedSince.\"\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error \u2014 limit (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"limit\": [\n            \"The limit must be at most 500.\"\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error \u2014 contentType (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 UTC timestamp, strictly the Z form: Y-m-d\\TH:i:sZ (e.g. 2026-01-01T00:00:00Z). Floor of the change window: only records changed at or after this time are returned. Defaults to the beginning of time. Offset notation (+00:00) is not accepted and returns a validation error",
                        "type": "text/plain"
                      },
                      "key": "updatedSince",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, records per page, 1-500. Defaults to 50 \u2014 pass a value explicitly rather than relying on the default",
                        "type": "text/plain"
                      },
                      "key": "limit",
                      "value": "50"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, continuation token from a previous response. A cursor marks your position in the change feed \u2014 how far you have read, by change time \u2014 and nothing else; other query parameters are not remembered, so send the same filters with every request. Treat the value as a black box \u2014 never construct or parse it. Cursors do not expire",
                        "type": "text/plain"
                      },
                      "key": "cursor",
                      "value": "eyJhY19jZW50cmFsX2NvbnRlbnRfY29tcGxldGlvbnMi..."
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended users will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true Course records will include enrolled and in progress users. Live Learning requires showNotCompleted instead; Video and Resource records are always completed-only",
                        "type": "text/plain"
                      },
                      "key": "includeEnrolments",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true completion records will include all custom user fields",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true custom course fields for courses will be included",
                        "type": "text/plain"
                      },
                      "key": "contentFields",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1234"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content type (case-insensitive). Available values: course, live learning, resource, video",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true includes records that are not yet completed (enrolled/in progress)",
                        "type": "text/plain"
                      },
                      "key": "showNotCompleted",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"contentType\": [\n            \"Invalid contentType. Must be one of: course, live learning, resource, video\"\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "7ba84d3e-4b6d-4047-b962-ea2ba8c28ac6",
          "name": "Completions",
          "request": {
            "name": "Completions",
            "description": {
              "content": "Upload a user completion record into Acorn LMS. This endpoint only supports one completion per request.\n\n### Body fields\n\n- `contentName` \u2014 string, required. The name of the content.\n- `contentType` \u2014 string, required. Case-sensitive, exactly `Course` or `Live Learning`.\n- `username` \u2014 string, required. Must match an existing user in the tenancy.\n- `timeCompleted` \u2014 string, required. ISO 8601 with an explicit offset (`Z` or `+00:00`).\n- `contentId` \u2014 integer, optional. If provided it must resolve to content in the tenancy.\n- `comment` \u2014 string, optional. Maximum 250 characters.\n- `certificateid` \u2014 string, optional.\n\nWhen `contentId` is omitted, content is matched by `contentName` \u2014 and **auto-created if no\nmatch exists**. In that case the success message includes the new content, e.g.\n\"... The following course was created: Excel: Starting With the Basics(123)\".\n\nFailures return HTTP 200 with the standard envelope: `{\"status\": \"Failed\", \"errors\": {\"exception\": \"...\"}}`.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "completions"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"contentName\": \"Excel: Starting With the Basics\",\n  \"contentId\": \"714\",\n  \"contentType\": \"Course\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"timeCompleted\": \"2023-05-10T05:15:23Z\",\n  \"comment\": \"Complete from Recognition of Prior Learning\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "39f0215e-b3ed-45ac-b626-cf7a634027e5",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"contentName\": \"Excel: Starting With the Basics\",\n  \"contentId\": \"714\",\n  \"contentType\": \"Course\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"timeCompleted\": \"2023-05-10T05:15:23Z\",\n  \"comment\": \"Complete from Recognition of Prior Learning\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Complete\",\n  \"data\": {\n    \"success\": \"Saved active course completion.\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5c7d2438-461d-45e9-9134-f76a0df524e4",
              "name": "Validation Error Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "completions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"contentName\": \"Excel: Starting With the Basics\",\n  \"contentId\": \"714\",\n  \"contentType\": \"Course\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"timeCompleted\": \"2023-05-10T05:15:23Z\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"exception\": \"The following course could not be found with the provided Content ID: 714\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "15c640b4-8873-4072-a242-4243599b9649",
          "name": "Completion Certificate",
          "request": {
            "name": "Completion Certificate",
            "description": {
              "content": "Download the PDF completion certificate for a user's completion of content.\n\n### URL Parameters\n\n- `tenancyId` \u2014 **Required** integer, the tenancy ID.\n- `contentId` \u2014 **Required** integer, the ID of the completed content.\n- `contentType` \u2014 **Required** string, the type of content: `course`, `live learning`, or a partnered-content type name.\n- `timeCompleted` \u2014 **Required** string, ISO 8601 datetime with an explicit offset (`Z` or `+00:00`) of when the completion occurred, matching the `timecompleted` returned by the Completions endpoint. Pass `0` for the most recent completion. A Unix timestamp is also accepted.\n- `userId` \u2014 **Required** integer, the user ID.\n\n### Response\n\nReturns the certificate PDF rendered inline (`Content-Disposition: inline`), with the filename derived from the content name.\n\n### Errors\n\n- `400` \u2014 `{\"error\": \"Invalid timeCompleted. Provide an ISO 8601 datetime or a Unix timestamp\"}` \u2014 `timeCompleted` could not be parsed.\n- `400` \u2014 `{\"error\": \"Invalid content type\"}` (note the singular `error` key, not the usual `errors` envelope).\n- `403` \u2014 `{\"error\": \"Not authorised to download this certificate\"}` \u2014 the completion is not eligible for a certificate.\n- `404` \u2014 `{\"error\": \"A certificate could not be found for the supplied parameters\"}` \u2014 no matching completion exists for that user, content, and timeCompleted.\n- `500` \u2014 `{\"error\": \"Certificate generation failed\"}` \u2014 an unexpected error while rendering the PDF.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_coursemanagement",
                "index.php",
                "generate_certificate_external",
                "{{tenancy_id}}",
                ":contentId",
                ":contentType",
                ":timeCompleted",
                ":userId"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "",
                  "key": "contentId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                },
                {
                  "type": "any",
                  "value": "",
                  "key": "contentType",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                },
                {
                  "type": "any",
                  "value": "",
                  "key": "timeCompleted",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                },
                {
                  "type": "any",
                  "value": "",
                  "key": "userId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "text/plain"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK - PDF)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "text/plain"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "text/plain"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "Content-Disposition",
                  "value": "inline; filename=\"Introduction_to_Safety.pdf\""
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "[PDF binary content - certificate]",
              "cookie": [],
              "_postman_previewlanguage": "text"
            },
            {
              "name": "Validation Error \u2014 timeCompleted (400 Bad Request)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"error\": \"Invalid timeCompleted. Provide an ISO 8601 datetime or a Unix timestamp\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error \u2014 content type (400 Bad Request)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"error\": \"Invalid content type\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Not Authorised (403 Forbidden)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"error\": \"Not authorised to download this certificate\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Certificate Not Found (404 Not Found)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"error\": \"A certificate could not be found for the supplied parameters\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Generation Failed (500 Internal Server Error)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "generate_certificate_external",
                    "{{tenancy_id}}",
                    ":contentId",
                    ":contentType",
                    ":timeCompleted",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentType"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "timeCompleted"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Internal Server Error",
              "code": 500,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n    \"error\": \"Certificate generation failed\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Course Enrolment ",
      "description": "Course enrolment allows you to enrol an individual user in a course within the LMS. The enrolment is created immediately and the user can begin the course's activities as soon as they sign in.",
      "item": [
        {
          "id": "60006990-77bc-4ccc-bb82-c0225dcb12c1",
          "name": "Course Enrolment",
          "request": {
            "name": "Course Enrolment",
            "description": {
              "content": "Enrol an individual user in a course. The enrolment is created immediately and the user can\nbegin the course as soon as they sign in.\n\n### Request body fields\n\n- `username` (required) \u2014 the username of the user to enrol.\n- `contentId` (required) \u2014 integer, the contentId of the course.\n\n### Errors\n\nErrors are returned with HTTP 200 as `{\"status\": \"Failed\", \"errors\": {...}}`. Possible keys:\n\n- `errors.username` \u2014 \"You must provide a valid username.\"\n- `errors.contentId` \u2014 invalid contentId, the user is already enrolled, or the user does not have permission to be enrolled in this course.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_coursemanagement",
                "index.php",
                "api",
                "1.2",
                "enrolments",
                "{{tenancy_id}}"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"sherlock.holmes@example.com\",\n  \"contentId\": 123\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "5b801bf5-e807-4ad5-b8e6-23a91639bffe",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "enrolments",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"sherlock.holmes@example.com\",\n  \"contentId\": 123\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Complete\",\n  \"data\": {\n    \"success\": true\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d9c7b4d0-3353-4896-9039-d3ca4697bd11",
              "name": "Already Enrolled Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "enrolments",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"sherlock.holmes@example.com\",\n  \"contentId\": 123\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"contentId\": \"The user sherlock.holmes@example.com is already enrolled in this course.\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "External Catalogue ",
      "description": "The external catalogue allows you to retrieve content from within the LMS in order to display it on an external website or intranet.",
      "item": [
        {
          "id": "d8b04f01-8f96-4669-a0a2-0a182803b842",
          "name": "External Catalogue",
          "request": {
            "name": "External Catalogue",
            "description": {
              "content": "Retrieve content from the LMS catalogue for display on an external website or intranet. Filter by content type, name, program, category, or tags.\n\n### Response notes\n\n- `paymentCost` \u2014 an object (`finalCost`, `applicationId`, `discount`) for paid Courses; the integer `0` for all other content and for Courses without a payment application.\n- `completionstatus` \u2014 one of `Not Enrolled`, `Enrolled`, `In Progress`, `Completed`; `null` when no `username` is supplied (always `null` for Program items).\n- `contentstatus` \u2014 one of `Active`, `Hidden`, `Deactivated`.\n- `customfields` \u2014 every content custom field configured for the tenancy as `{name, data}` pairs; `data` is `\"\"` when the field has no value, and date-type fields are ISO 8601 when set.\n- Filtering by `categoryId` or `tagIds` excludes all Program-type content from the results.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_coursemanagement",
                "index.php",
                "api",
                "1.2",
                "external_catalogue",
                "{{tenancy_id}}"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) integer - required, the number of results per page. Maximum 100.",
                    "type": "text/plain"
                  },
                  "key": "perPage",
                  "value": "16"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, the page number (default 1). Required when contentType is partnered content.",
                    "type": "text/plain"
                  },
                  "key": "page",
                  "value": "1"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, the username of the user viewing the catalogue",
                    "type": "text/plain"
                  },
                  "key": "username",
                  "value": "sherlock.holmes@example.com"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter by content type (e.g., course, live learning, resource, video, page, program, partnered content)",
                    "type": "text/plain"
                  },
                  "key": "contentType",
                  "value": "course"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by a specific content ID",
                    "type": "text/plain"
                  },
                  "key": "contentId",
                  "value": "1731"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter results by content name (partial match)",
                    "type": "text/plain"
                  },
                  "key": "nameFilter",
                  "value": "string"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by program ID",
                    "type": "text/plain"
                  },
                  "key": "programId",
                  "value": "123"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter results by category ID",
                    "type": "text/plain"
                  },
                  "key": "categoryId",
                  "value": "12"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, comma-separated list of tag IDs to filter by",
                    "type": "text/plain"
                  },
                  "key": "tagIds",
                  "value": "11"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "external_catalogue",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, the number of results per page. Maximum 100.",
                        "type": "text/plain"
                      },
                      "key": "perPage",
                      "value": "16"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, the page number (default 1). Required when contentType is partnered content.",
                        "type": "text/plain"
                      },
                      "key": "page",
                      "value": "1"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, the username of the user viewing the catalogue",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "sherlock.holmes@example.com"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter by content type (e.g., course, live learning, resource, video, page, program, partnered content)",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by a specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1731"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content name (partial match)",
                        "type": "text/plain"
                      },
                      "key": "nameFilter",
                      "value": "string"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by program ID",
                        "type": "text/plain"
                      },
                      "key": "programId",
                      "value": "123"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by category ID",
                        "type": "text/plain"
                      },
                      "key": "categoryId",
                      "value": "12"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, comma-separated list of tag IDs to filter by",
                        "type": "text/plain"
                      },
                      "key": "tagIds",
                      "value": "11"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": {\n        \"items\": [\n            {\n                \"fullname\": \"Introduction to Safety\",\n                \"summary\": \"<p>Learn the fundamentals of workplace safety.</p>\",\n                \"summarytext\": \"Learn the fundamentals of workplace safety.\",\n                \"contentid\": 123,\n                \"contenttype\": \"Course\",\n                \"url\": \"https://example.acornplms.com/local/acorn_coursemanagement/index.php/courses/123\",\n                \"imageurl\": \"https://example.acornplms.com/pluginfile.php/123/course/overviewfiles/safety.jpg\",\n                \"badge\": \"\",\n                \"completionstatus\": null,\n                \"programs\": [],\n                \"category\": null,\n                \"tags\": [],\n                \"customfields\": [\n                    {\n                        \"name\": \"Language\",\n                        \"data\": \"English\"\n                    },\n                    {\n                        \"name\": \"Review Due\",\n                        \"data\": \"\"\n                    }\n                ],\n                \"cost\": 100000,\n                \"duration\": \"\",\n                \"timecreated\": \"2023-06-15T08:00:00+00:00\",\n                \"timemodified\": \"2024-01-10T14:30:00+00:00\",\n                \"contentstatus\": \"Active\",\n                \"paymentCost\": {\n                    \"finalCost\": 10000,\n                    \"applicationId\": 95,\n                    \"discount\": {\n                        \"success\": true,\n                        \"errors\": \"No discount found.\",\n                        \"discount\": null,\n                        \"discountedPrice\": 10000,\n                        \"originalPrice\": 10000,\n                        \"discountedAmount\": 0,\n                        \"currency\": \"AUD\"\n                    }\n                }\n            }\n        ],\n        \"next_page_url\": \"https://example.acornplms.com/local/acorn_coursemanagement/index.php/api/1.2/external_catalogue/1?perPage=2&page=2\",\n        \"previous_page_url\": null,\n        \"per_page\": 2\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Missing perPage Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "external_catalogue",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, the number of results per page. Maximum 100.",
                        "type": "text/plain"
                      },
                      "key": "perPage",
                      "value": "16"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, the page number (default 1). Required when contentType is partnered content.",
                        "type": "text/plain"
                      },
                      "key": "page",
                      "value": "1"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, the username of the user viewing the catalogue",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "sherlock.holmes@example.com"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter by content type (e.g., course, live learning, resource, video, page, program, partnered content)",
                        "type": "text/plain"
                      },
                      "key": "contentType",
                      "value": "course"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by a specific content ID",
                        "type": "text/plain"
                      },
                      "key": "contentId",
                      "value": "1731"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter results by content name (partial match)",
                        "type": "text/plain"
                      },
                      "key": "nameFilter",
                      "value": "string"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by program ID",
                        "type": "text/plain"
                      },
                      "key": "programId",
                      "value": "123"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter results by category ID",
                        "type": "text/plain"
                      },
                      "key": "categoryId",
                      "value": "12"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, comma-separated list of tag IDs to filter by",
                        "type": "text/plain"
                      },
                      "key": "tagIds",
                      "value": "11"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"perPage\": \"The perPage parameter must be set.\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "External Course ",
      "description": "External course allows you to retrieve the content of an individual course from within the LMS.",
      "item": [
        {
          "id": "94d820ef-d6ff-400b-a83c-8a52d06cb48b",
          "name": "External Course",
          "request": {
            "name": "External Course",
            "description": {
              "content": "Retrieve the content of an individual course from the LMS by content ID. Useful for displaying course details on an external website.\n\n### Response notes\n\n- `paymentCost` \u2014 present only when the course has a payment application, as an object (`finalCost`, `applicationId`, `discount`) between `completionstatus` and `coursesections`. The key is absent otherwise.\n- `completioncriteria` \u2014 `null` when the course has no completion criteria. `condition` is `completeAllActivities` or `completeAnyActivities`; `activityids` is an array of strings.\n- `activities[].type` \u2014 the lowercase module name (e.g. `page`, `scorm`, `checklist`, `quiz`). Some types include extra fields: `pageContent` (page), `listItems` (checklist), `embedUrl` (scorm).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_coursemanagement",
                "index.php",
                "api",
                "1.2",
                "external_catalogue",
                "{{tenancy_id}}",
                "course",
                ":contentId"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, the username of the user viewing the course",
                    "type": "text/plain"
                  },
                  "key": "username",
                  "value": "sherlock.holmes@example.com"
                }
              ],
              "variable": [
                {
                  "type": "any",
                  "value": "",
                  "key": "contentId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "external_catalogue",
                    "{{tenancy_id}}",
                    "course",
                    ":contentId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, the username of the user viewing the course",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "sherlock.holmes@example.com"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": {\n        \"fullname\": \"Introduction to Workplace Safety\",\n        \"summary\": \"<p>A comprehensive introduction to workplace safety.</p>\",\n        \"summarytext\": \"A comprehensive introduction to workplace safety.\",\n        \"contentid\": 123,\n        \"contenttype\": \"Course\",\n        \"url\": \"https://example.acornplms.com/local/acorn_coursemanagement/index.php/courses/123\",\n        \"imageurl\": \"https://example.acornplms.com/pluginfile.php/123/course/overviewfiles/safety.jpg\",\n        \"badge\": \"\",\n        \"completionstatus\": null,\n        \"coursesections\": [\n            {\n                \"name\": \"Getting started\",\n                \"activities\": [\n                    {\n                        \"activityid\": 789,\n                        \"name\": \"Safety induction\",\n                        \"description\": \"<p>Read before starting.</p>\",\n                        \"url\": \"https://example.acornplms.com/mod/page/view.php?id=789\",\n                        \"hidden\": false,\n                        \"type\": \"page\",\n                        \"pageContent\": \"<p>Welcome to the course.</p>\",\n                        \"completionstatus\": null\n                    }\n                ]\n            }\n        ],\n        \"completioncriteria\": {\n            \"condition\": \"completeAllActivities\",\n            \"activityids\": [\n                \"789\"\n            ]\n        },\n        \"programs\": [],\n        \"category\": null,\n        \"tags\": [],\n        \"customfields\": [],\n        \"cost\": 100000,\n        \"duration\": \"\",\n        \"timecreated\": \"2023-06-15T08:00:00+00:00\",\n        \"timemodified\": \"2024-01-10T14:30:00+00:00\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Course Not Found Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_coursemanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "external_catalogue",
                    "{{tenancy_id}}",
                    "course",
                    ":contentId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, the username of the user viewing the course",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "sherlock.holmes@example.com"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "contentId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"contentId\": \"A course with the supplied contentId could not be found.\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "External Calendar ",
      "description": "The external calendar allows you to retrieve calendar events (Live Learnings and sessions) scheduled within the LMS. Filter the results by date range, or use noCohortRestriction to exclude cohort-restricted events from the response.",
      "item": [
        {
          "id": "d26881b9-0add-4ddc-a061-7c1beef6586f",
          "name": "External Calendar",
          "request": {
            "name": "External Calendar",
            "description": {
              "content": "Retrieve calendar events (Live Learnings and sessions) scheduled within the LMS. Filter the results by date range, or restrict the response to events that are not cohort-restricted.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_profile",
                "index.php",
                "api",
                "1.2",
                "external_calendar",
                "{{tenancy_id}}"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T00:00:00Z). A bare date or a datetime without an offset fails validation",
                    "type": "text/plain"
                  },
                  "key": "start",
                  "value": "2025-01-01T00:00:00Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T23:59:59Z). A bare date or a datetime without an offset fails validation",
                    "type": "text/plain"
                  },
                  "key": "end",
                  "value": "2026-01-01T23:59:59Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true only returns events that are not cohort-restricted. Pass 1/true to enable; any non-empty value (including \"false\") counts as enabled",
                    "type": "text/plain"
                  },
                  "key": "noCohortRestriction",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_profile",
                    "index.php",
                    "api",
                    "1.2",
                    "external_calendar",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T00:00:00Z). A bare date or a datetime without an offset fails validation",
                        "type": "text/plain"
                      },
                      "key": "start",
                      "value": "2025-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T23:59:59Z). A bare date or a datetime without an offset fails validation",
                        "type": "text/plain"
                      },
                      "key": "end",
                      "value": "2026-01-01T23:59:59Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true only returns events that are not cohort-restricted. Pass 1/true to enable; any non-empty value (including \"false\") counts as enabled",
                        "type": "text/plain"
                      },
                      "key": "noCohortRestriction",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": [\n        {\n            \"type\": \"sessiondate\",\n            \"title\": \"First Aid Training - Session 1\",\n            \"description\": \"<p>Hands-on first aid training session.</p>\",\n            \"allday\": false,\n            \"cohortRestricted\": false,\n            \"start\": \"2024-01-15T09:00:00+00:00\",\n            \"end\": \"2024-01-15T17:00:00+00:00\",\n            \"location\": \"Training Room A\",\n            \"url\": \"https://example.acornplms.com/view_facetoface/234/event/88/session/101\",\n            \"imageurl\": \"https://example.acornplms.com/pluginfile.php/234/facetoface/image/first-aid.jpg\"\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error Example (400 Bad Request)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_profile",
                    "index.php",
                    "api",
                    "1.2",
                    "external_calendar",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T00:00:00Z). A bare date or a datetime without an offset fails validation",
                        "type": "text/plain"
                      },
                      "key": "start",
                      "value": "2025-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "date (YYYY-MM-DDTHH:MM:SSZ) - optional, must be a full ISO 8601 date & time with an explicit offset (e.g. 2026-01-01T23:59:59Z). A bare date or a datetime without an offset fails validation",
                        "type": "text/plain"
                      },
                      "key": "end",
                      "value": "2026-01-01T23:59:59Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true only returns events that are not cohort-restricted. Pass 1/true to enable; any non-empty value (including \"false\") counts as enabled",
                        "type": "text/plain"
                      },
                      "key": "noCohortRestriction",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"start\": \"Please provide a valid start date in ISO 8601 date & time format\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Onboarding Users ",
      "description": "Onboarding users are new starters at their place of employment. Use this endpoint to create an onboarding record with the user's name, email, mobile number, and commencement date, plus optional manager, branch, location, and status details.",
      "item": [
        {
          "id": "2b6f0f48-ebb4-478c-b9b1-1335057b313f",
          "name": "Onboarding Users",
          "request": {
            "name": "Onboarding Users",
            "description": {
              "content": "Create an onboarding record for a new starter. Required fields include name, email, and\ncommencement date. Optional fields cover mobile number, manager details, branch, location, and\nemployment status.\n\nValidation failures return HTTP 200 with `status: Failed` and an `errors` map.\n\n### Request body fields\n\n- `firstName` (required) \u2014 string, max length 100 chars.\n- `lastName` (required) \u2014 string, max length 100 chars.\n- `email` (required) \u2014 string, max length 100 chars.\n- `mobileNumber` (optional) \u2014 string, all mobile formats accepted. Only validated when non-empty and SMS is enabled for the tenancy.\n- `commencementDate` (required) \u2014 ISO 8601 date & time (YYYY-MM-DDTHH:MM:SSZ). Must be in the future; a past date fails with \"Please provide a commencement date in the future.\"\n- `managerFirstName` (optional) \u2014 the first name of the user's manager.\n- `managerLastName` (optional) \u2014 the last name of the user's manager.\n- `managerEmail` (optional) \u2014 the email of the user's manager.\n- `branch` (optional) \u2014 the branch/division the user belongs to.\n- `location` (optional) \u2014 the user's work location.\n- `status` (optional) \u2014 the user's employment status.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_onboarding",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "onboardingusers"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"mobileNumber\": \"+61412345678\",\n  \"commencementDate\": \"2027-02-01T09:00:00Z\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "7158e25b-6d0b-487a-95a7-026c3bdad83d",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_onboarding",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "onboardingusers"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"mobileNumber\": \"+61412345678\",\n  \"commencementDate\": \"2027-02-01T09:00:00Z\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Complete\",\n  \"data\": {\n    \"success\": true\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ddb1e119-38a8-4e96-be8a-c94cda7069dc",
              "name": "Validation Error Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_onboarding",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "onboardingusers"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"\",\n  \"lastName\": \"\",\n  \"email\": \"invalid-email\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"firstName\": \"First name is required.\",\n    \"lastName\": \"Last name is required.\",\n    \"email\": \"Please provide a valid email address.\",\n    \"commencementDate\": \"Commencement date is required.\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Training History ",
      "description": "Training history includes all completion, enrolment and attendance history for a single user.",
      "item": [
        {
          "id": "8b25d6eb-4166-4b41-be3c-f3db2e57fd58",
          "name": "Training History",
          "request": {
            "name": "Training History",
            "description": {
              "content": "Retrieve the complete training history for a single user, including completion, enrolment, and attendance records. Pass the user's username and tenancyId as query parameters.\n\n### Response notes\n\n- `completions[].certificatelink` \u2014 `null` when no certificate has been earned for the completion.\n- `badges[].timecreated` \u2014 a unix timestamp integer, or `null` for system badges. `badges[].courseid` can also be `null`.\n- `externallearnings[].completionstatus` \u2014 always mirrors `method` (the same value is returned in both fields).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_profile",
                "index.php",
                "api",
                "1.2",
                "training_history"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) integer - required, the ID of the tenancy the user belongs to",
                    "type": "text/plain"
                  },
                  "key": "tenancyId",
                  "value": "1265"
                },
                {
                  "disabled": false,
                  "description": {
                    "content": "(Required) string - required, the username of the user whose training history is being retrieved",
                    "type": "text/plain"
                  },
                  "key": "username",
                  "value": "sherlock.holmes@example.com"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_profile",
                    "index.php",
                    "api",
                    "1.2",
                    "training_history"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) integer - required, the ID of the tenancy the user belongs to",
                        "type": "text/plain"
                      },
                      "key": "tenancyId",
                      "value": "1265"
                    },
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) string - required, the username of the user whose training history is being retrieved",
                        "type": "text/plain"
                      },
                      "key": "username",
                      "value": "sherlock.holmes@example.com"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": {\n        \"completions\": [\n            {\n                \"contentid\": 123,\n                \"contenttype\": \"Course\",\n                \"contentname\": \"Introduction to Safety\",\n                \"timeenrolled\": \"2024-01-08T09:00:00+00:00\",\n                \"timestarted\": \"2024-01-10T11:15:00+00:00\",\n                \"timecompleted\": \"2024-01-15T10:30:00+00:00\",\n                \"completionstatus\": \"Completed\",\n                \"certificatelink\": \"https://example.acornplms.com/local/acorn_coursemanagement/index.php/generate_certificate/123/1705314600/456\"\n            }\n        ],\n        \"enrolments\": [\n            {\n                \"contentid\": 345,\n                \"contenttype\": \"Course\",\n                \"contentname\": \"Advanced Leadership\",\n                \"timeenrolled\": \"2024-01-20T09:00:00+00:00\",\n                \"timestarted\": \"2024-01-22T10:00:00+00:00\",\n                \"completionstatus\": \"In Progress\"\n            }\n        ],\n        \"attendance\": [\n            {\n                \"contentid\": 234,\n                \"contenttype\": \"Live Learning\",\n                \"contentname\": \"First Aid Training\",\n                \"eventname\": \"February Session\",\n                \"sessionstarttime\": \"2024-02-20T09:00:00+00:00\",\n                \"sessionendtime\": \"2024-02-20T17:00:00+00:00\",\n                \"attendancestatus\": \"Attended\",\n                \"sessionlink\": \"https://example.acornplms.com/view_facetoface/234/event/88/session/101\"\n            }\n        ],\n        \"externallearnings\": [\n            {\n                \"id\": 11001,\n                \"name\": \"First Aid Certificate\",\n                \"method\": \"Self reported\",\n                \"nonagency\": true,\n                \"completionstatus\": \"Self reported\"\n            }\n        ],\n        \"partneredcontentcompletions\": [\n            {\n                \"contentid\": 987,\n                \"contenttype\": \"Course\",\n                \"contentname\": \"Partner Compliance Module\",\n                \"timestarted\": \"2024-03-01T09:00:00+00:00\",\n                \"timecompleted\": \"2024-03-02T12:00:00+00:00\",\n                \"completionstatus\": \"Completed\"\n            }\n        ],\n        \"badges\": [\n            {\n                \"id\": 7,\n                \"name\": \"Safety Champion\",\n                \"description\": \"Awarded for completing all safety courses.\",\n                \"timecreated\": 1705314900,\n                \"courseid\": 123,\n                \"imageurl\": \"https://example.acornplms.com/pluginfile.php/7/badges/badgeimage/safety.png\"\n            }\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Transactions ",
      "description": "Transactions contain the details of all purchases within the LMS, such as course purchases, licence payments, and coupon redemptions. Each transaction record includes the user, the content purchased, the amount, and the timestamp.",
      "item": [
        {
          "id": "05fc92c0-e22b-4253-a17d-c11bad2153fb",
          "name": "Transactions",
          "request": {
            "name": "Transactions",
            "description": {
              "content": "Retrieve all transactions for the tenancy, including course purchases, licence payments, and coupon redemptions. Each record includes the user, the content purchased, the amount, and the timestamp.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_administration",
                "index.php",
                "api",
                "1.2",
                "transactions",
                "{{tenancy_id}}"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "123456"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_administration",
                    "index.php",
                    "api",
                    "1.2",
                    "transactions",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "123456"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12349,\n    \"data\": [\n        {\n            \"receiptid\": \"LMS1517\",\n            \"amount\": 55.8,\n            \"transactionid\": \"ch_3TxhuEIyM3Jg67LI0xOqX96k\",\n            \"transactiondate\": \"2026-07-27T06:20:55+00:00\",\n            \"status\": \"succeeded\",\n            \"user\": {\n                \"id\": 456,\n                \"firstname\": \"Sherlock\",\n                \"lastname\": \"Holmes\",\n                \"username\": \"sherlock.holmes@example.com\"\n            },\n            \"payment_application\": {\n                \"contentname\": \"Introduction to Safety\",\n                \"contentid\": 123,\n                \"contenttype\": \"Course\"\n            }\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_administration",
                    "index.php",
                    "api",
                    "1.2",
                    "transactions",
                    "{{tenancy_id}}"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "123456"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12349\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "User Accounts ",
      "description": "User accounts are individual user records within the LMS. Use these endpoints to list all accounts in the tenancy, create new user accounts, or update existing accounts with new details (name, email, suspended state, custom user fields).",
      "item": [
        {
          "id": "09def9bb-e2c1-4a14-94bb-c14b1716d74a",
          "name": "User Accounts",
          "request": {
            "name": "User Accounts",
            "description": {
              "content": "Retrieve a list of all user accounts in the tenancy. Each record includes the user's name, email, and suspended status. Custom user fields are only included when `userFields=true`, nested in a `userdata` object. A `previousaccounts` array of any prior user IDs that have been merged into this account is included when the previous-accounts feature is enabled for the tenancy; otherwise the key is absent.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "useraccounts"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "309"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true suspended user accounts will be included",
                    "type": "text/plain"
                  },
                  "key": "showSuspended",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "boolean - optional, if true user account records will include all custom user fields for the tenancy, nested in a `userdata` object keyed by field shortname",
                    "type": "text/plain"
                  },
                  "key": "userFields",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "309"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended user accounts will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true user account records will include all custom user fields for the tenancy, nested in a `userdata` object keyed by field shortname",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12350,\n    \"data\": [\n        {\n            \"userid\": 456,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"email\": \"sherlock.holmes@example.com\",\n            \"firstname\": \"Sherlock\",\n            \"lastname\": \"Holmes\",\n            \"timecreated\": \"2023-06-01T10:00:00+00:00\",\n            \"lastaccess\": \"2024-01-20T15:30:00+00:00\",\n            \"lastupdated\": \"2024-01-20T15:30:00+00:00\",\n            \"suspended\": \"No\",\n            \"tenancyname\": \"Example Organisation\",\n            \"previousaccounts\": [],\n            \"userdata\": {\n                \"Department\": \"Finance\",\n                \"Location\": \"Darwin\"\n            }\n        },\n        {\n            \"userid\": 457,\n            \"username\": \"john.watson@example.com\",\n            \"email\": \"john.watson@example.com\",\n            \"firstname\": \"John\",\n            \"lastname\": \"Watson\",\n            \"timecreated\": \"2023-07-14T08:05:00+00:00\",\n            \"lastaccess\": \"Never\",\n            \"lastupdated\": \"2023-07-14T08:05:00+00:00\",\n            \"suspended\": \"Yes\",\n            \"tenancyname\": \"Example Organisation\",\n            \"previousaccounts\": [\n                113,\n                123\n            ],\n            \"userdata\": {\n                \"Department\": \"People and Culture\",\n                \"Location\": \"Canberra\"\n            }\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "309"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true suspended user accounts will be included",
                        "type": "text/plain"
                      },
                      "key": "showSuspended",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "boolean - optional, if true user account records will include all custom user fields for the tenancy, nested in a `userdata` object keyed by field shortname",
                        "type": "text/plain"
                      },
                      "key": "userFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12350\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "e3e1eaf1-92d7-4e91-a97c-60f5184be7ce",
          "name": "User Accounts",
          "request": {
            "name": "User Accounts",
            "description": {
              "content": "Create a new user account in the LMS. `firstName`, `lastName` (max 100 chars each), and `email` are required. `password` is required only when `notify` is false or omitted \u2014 when `notify` is true any supplied password is discarded and the user sets their own via a welcome email. `confirmPassword` is optional and defaults to the password. `username` is ignored and set to the lowercased email, unless the tenancy has the separate-usernames feature enabled. Supports an optional `suspended` state.\n\nCustom user fields can be set via `userData` \u2014 keys are the custom fields' display names. Unknown names and empty values are silently dropped (so a field cannot be cleared), date fields must be a parseable date string (not a unix timestamp), and multiselect fields must be a JSON array.\n\nValidation failures return HTTP 200 with `status: Failed` and an `errors` map, which includes an empty-string entry for each field that passed validation.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "useraccounts"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"notify\": true,\n  \"password\": \"SecurePass123!\",\n  \"confirmPassword\": \"SecurePass123!\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "ed75c28a-ba5c-4587-ab27-e3fcea988a76",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"notify\": true,\n  \"password\": \"SecurePass123!\",\n  \"confirmPassword\": \"SecurePass123!\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"User created\",\n  \"data\": {\n    \"userid\": 790,\n    \"username\": \"sherlock.holmes@example.com\",\n    \"email\": \"sherlock.holmes@example.com\",\n    \"firstname\": \"Sherlock\",\n    \"lastname\": \"Holmes\",\n    \"suspended\": 0,\n    \"tenancyname\": \"Example Organisation\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "40599aa5-0df7-4e90-9d75-e275a592c029",
              "name": "Validation Error Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"invalid-email\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"firstName\": \"\",\n    \"lastName\": \"\",\n    \"email\": \"Invalid email address\",\n    \"password\": \"Passwords cannot be empty\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "dc96a3f1-ec74-4871-a713-ef48c506012f",
          "name": "User Accounts",
          "request": {
            "name": "User Accounts",
            "description": {
              "content": "Update an existing user account by ID. Pass the user's ID as the path variable and any fields you want to change in the body \u2014 supports name, email, username, suspended status, and custom user fields. Passwords cannot be changed via this endpoint; any password fields in the body are silently ignored. `PUT` is also accepted and behaves identically.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "useraccounts",
                ":userId"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": [
                {
                  "type": "any",
                  "value": "",
                  "key": "userId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "PATCH",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"suspended\": \"false\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "0f7d9f36-4b88-416c-94b5-060b816322c5",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"Sherlock\",\n  \"lastName\": \"Holmes\",\n  \"email\": \"sherlock.holmes@example.com\",\n  \"username\": \"sherlock.holmes@example.com\",\n  \"suspended\": \"false\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"User updated\",\n  \"data\": {\n    \"userid\": 456,\n    \"username\": \"sherlock.holmes@example.com\",\n    \"email\": \"sherlock.holmes@example.com\",\n    \"firstname\": \"Sherlock\",\n    \"lastname\": \"Holmes\",\n    \"suspended\": 0,\n    \"tenancyname\": \"Example Organisation\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "5154032a-c191-4d48-a144-4144bcd1821a",
              "name": "User Not Found Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useraccounts",
                    ":userId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "userId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "PATCH",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"firstName\": \"Sherlock\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"userId\": \"A user with the supplied userId could not be found.\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "User Uploads ",
      "description": "User uploads allow you to create a large number of user accounts in the LMS in a single request. Provide CSV-formatted data inline along with notification and welcome email preferences. Useful for bulk onboarding.",
      "item": [
        {
          "id": "e13525bf-cb8f-4cb8-b804-4e7bfe80a294",
          "name": "User Uploads",
          "request": {
            "name": "User Uploads",
            "description": {
              "content": "Create a large amount of user accounts in the LMS from CSV data. The upload is processed asynchronously \u2014 the initial POST returns a `requestid`, which you poll (same URL, with `requestid` as a query parameter or in the body) until the status is `Complete`. While the upload is still processing, polls return `status: Processing` along with a `data.feedId` for the upload. Polling with the legacy `{\"feedId\": N}` body is still supported, but is itself asynchronous \u2014 the first call returns `Processing` with a `requestid` to poll.\n\n### Request body fields\n\n- `csvdata` (required) \u2014 array of CSV line strings. Row 0 is the header row, and the first four headers must be exactly `username,email,firstname,lastname` in that order, otherwise the upload is rejected. Any extra headers map to custom user fields \u2014 unknown headers automatically create new custom fields on the tenancy. Reserved extra columns: `suspended`, `manager_username`, `mobilenumber`.\n- `emailSend` (optional) \u2014 boolean, if true welcome emails are sent to created users.\n- `sendNotifications` (optional) \u2014 boolean, if true notifications are sent.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_usermanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "useruploads"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the upload with the specified requestid instead of submitting a new upload. If not included a new upload will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12360"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"csvdata\": [\n    \"username,email,firstname,lastname,Location\",\n    \"testAPI.user@example.com,testAPI.user@example.com,Test,User,Canberra ACT\"\n  ],\n  \"emailSend\": true,\n  \"sendNotifications\": true\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "38e682fe-0a39-49da-bc3d-252c9278add1",
              "name": "Initial upload (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_usermanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useruploads"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the upload with the specified requestid instead of submitting a new upload. If not included a new upload will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12360"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"csvdata\": [\n    \"username,email,firstname,lastname,Location\",\n    \"testAPI.user@example.com,testAPI.user@example.com,Test,User,Canberra ACT\"\n  ],\n  \"emailSend\": true,\n  \"sendNotifications\": true\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Processing\",\n  \"requestid\": 12360\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "09cb0d59-2f97-4454-8ac7-659060eb71de",
              "name": "Polling with requestid \u2014 still processing (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_usermanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useruploads"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the upload with the specified requestid instead of submitting a new upload. If not included a new upload will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12360"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"requestid\": 12360\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Processing\",\n  \"requestid\": 12360,\n  \"data\": {\n    \"feedId\": 7001\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "398bd069-c688-408f-82ad-12f3903de05b",
              "name": "Polling with requestid \u2014 finished (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_usermanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useruploads"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the upload with the specified requestid instead of submitting a new upload. If not included a new upload will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12360"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"requestid\": 12360\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Complete\",\n  \"requestid\": 12360,\n  \"data\": {\n    \"success\": true,\n    \"totals\": \"1 records successful, 0 records unsuccessful \",\n    \"message\": \"\",\n    \"users\": [\n      {\n        \"id\": 790,\n        \"firstName\": \"Test\",\n        \"lastName\": \"User\",\n        \"email\": \"testAPI.user@example.com\",\n        \"username\": \"testAPI.user@example.com\",\n        \"lastAccess\": 0,\n        \"tenancyId\": 1,\n        \"suspended\": 0,\n        \"secondaryemail\": \"\",\n        \"phone1\": \"\",\n        \"resetPassword\": false,\n        \"password\": \"\",\n        \"bulkUpload\": true,\n        \"updates\": \"\",\n        \"newstatus\": \"New User\"\n      }\n    ],\n    \"failedRows\": []\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "579c2ab1-6a7b-4289-8aaf-a2366966d2f7",
              "name": "Upload with an invalid row \u2014 poll result (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_usermanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "useruploads"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the upload with the specified requestid instead of submitting a new upload. If not included a new upload will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12360"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"requestid\": 12361\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Complete\",\n  \"requestid\": 12361,\n  \"data\": {\n    \"success\": true,\n    \"totals\": \"1 records successful, 1 records unsuccessful \",\n    \"message\": \"\",\n    \"users\": [\n      {\n        \"id\": 791,\n        \"firstName\": \"Valid\",\n        \"lastName\": \"User\",\n        \"email\": \"valid.user@example.com\",\n        \"username\": \"valid.user@example.com\",\n        \"lastAccess\": 0,\n        \"tenancyId\": 1,\n        \"suspended\": 0,\n        \"secondaryemail\": \"\",\n        \"phone1\": \"\",\n        \"resetPassword\": false,\n        \"password\": \"\",\n        \"bulkUpload\": true,\n        \"updates\": \"\",\n        \"newstatus\": \"New User\"\n      }\n    ],\n    \"failedRows\": [\n      {\n        \"row_id\": 2,\n        \"data\": \"invalid-email,invalid,Missing,Email\",\n        \"reason\": \"Not enough values\"\n      }\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Tenancy Details",
      "description": "Tenancy details provide information about the tenancies associated with your account, including their name, configuration, support contact, and user counts. Requires an api_key linked to `tenancyId=0` (a system-level api_key with cross-tenancy access). Contact [Acorn Support](https://help.acorn.works) to request one.",
      "item": [
        {
          "id": "1112ca7f-b8eb-4c14-bdc6-993baead3fea",
          "name": "Tenancy Details",
          "request": {
            "name": "Tenancy Details",
            "description": {
              "content": "Retrieve the tenancies associated with your account. Each record includes the tenancy's id, name, support contact details, and user count (`usercount` counts active users only \u2014 suspended, deleted, and guest accounts are excluded). This endpoint requires an api_key linked to `tenancyId=0` (a system-level api_key with cross-tenancy access). Contact [Acorn Support](https://help.acorn.works) to request one.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancydetails"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancydetails"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Example Tenancy\",\n            \"supportcontactname\": \"Acorn Support\",\n            \"supportcontactemail\": \"support@example.com\",\n            \"supportcontactlink\": \"https://help.acorn.works\",\n            \"usercount\": 250\n        },\n        {\n            \"id\": 2,\n            \"name\": \"Sample Production Site\",\n            \"supportcontactname\": \"Acorn Support\",\n            \"supportcontactemail\": \"support@example.com\",\n            \"supportcontactlink\": \"https://help.acorn.works\",\n            \"usercount\": 1500\n        },\n        {\n            \"id\": 3,\n            \"name\": \"Demo Tenancy\",\n            \"supportcontactname\": \"Acorn Support\",\n            \"supportcontactemail\": \"support@example.com\",\n            \"supportcontactlink\": \"https://help.acorn.works\",\n            \"usercount\": 50\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Forms",
      "description": "Forms allow you to retrieve form definitions and their submissions within the LMS. List forms or submissions for the tenancy, or retrieve the details of a specific form (including its fields) or submission (including all field responses).",
      "item": [
        {
          "id": "bdfbedb1-d067-4f5b-b086-63fb2b79b2bf",
          "name": "Forms List",
          "request": {
            "name": "Forms List",
            "description": {
              "content": "Retrieve a list of all forms available in the tenancy.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "forms"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12346"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter the results by form type\nAvailable Values: activity, session, momentum",
                    "type": "text/plain"
                  },
                  "key": "type",
                  "value": "momentum"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter the results by activity name, node title, event name",
                    "type": "text/plain"
                  },
                  "key": "usageName",
                  "value": "Course Feedback Form"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, filter the results by course name, momentum tile, live learning name",
                    "type": "text/plain"
                  },
                  "key": "contentName",
                  "value": "Introduction to Safety"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "bool - optional, controls whether the field\u2019s data is included",
                    "type": "text/plain"
                  },
                  "key": "withFields",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "forms"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12346"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by form type\nAvailable Values: activity, session, momentum",
                        "type": "text/plain"
                      },
                      "key": "type",
                      "value": "momentum"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by activity name, node title, event name",
                        "type": "text/plain"
                      },
                      "key": "usageName",
                      "value": "Course Feedback Form"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by course name, momentum tile, live learning name",
                        "type": "text/plain"
                      },
                      "key": "contentName",
                      "value": "Introduction to Safety"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, controls whether the field\u2019s data is included",
                        "type": "text/plain"
                      },
                      "key": "withFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12346,\n    \"data\": [\n        {\n            \"id\": 1,\n            \"type\": \"activity\",\n            \"usingtemplateid\": 10,\n            \"usageid\": 1001,\n            \"created_at\": \"2024-01-15T09:00:00.000000Z\",\n            \"updated_at\": \"2024-01-15T09:00:00.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Course Feedback Form\",\n            \"label\": \"Introduction to Safety\"\n        },\n        {\n            \"id\": 2,\n            \"type\": \"activity\",\n            \"usingtemplateid\": null,\n            \"usageid\": 1002,\n            \"created_at\": \"2024-02-10T14:30:00.000000Z\",\n            \"updated_at\": \"2024-02-10T14:30:00.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Pre-Course Survey\",\n            \"label\": \"Advanced Compliance Training\"\n        },\n        {\n            \"id\": 3,\n            \"type\": \"activity\",\n            \"usingtemplateid\": null,\n            \"usageid\": 1003,\n            \"created_at\": \"2024-03-05T11:15:30.000000Z\",\n            \"updated_at\": \"2024-03-05T11:15:30.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Skills Self-Assessment\",\n            \"label\": \"Annual Code of Conduct\"\n        },\n        {\n            \"id\": 4,\n            \"type\": \"activity\",\n            \"usingtemplateid\": 12,\n            \"usageid\": 1004,\n            \"created_at\": \"2024-04-20T08:45:00.000000Z\",\n            \"updated_at\": \"2024-04-20T08:45:00.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Session Feedback\",\n            \"label\": \"Quarterly Refresher Live Learning\"\n        },\n        {\n            \"id\": 5,\n            \"type\": \"momentum\",\n            \"usingtemplateid\": null,\n            \"usageid\": 2001,\n            \"created_at\": \"2024-05-15T10:00:00.000000Z\",\n            \"updated_at\": \"2024-05-15T10:00:00.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Application Form\",\n            \"label\": \"External Training Request\"\n        },\n        {\n            \"id\": 6,\n            \"type\": \"momentum\",\n            \"usingtemplateid\": null,\n            \"usageid\": 2002,\n            \"created_at\": \"2024-06-01T13:20:15.000000Z\",\n            \"updated_at\": \"2024-06-01T13:20:15.000000Z\",\n            \"deleted_at\": null,\n            \"name\": \"Manager Approval Form\",\n            \"label\": \"Onboarding Workflow\"\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "forms"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12346"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by form type\nAvailable Values: activity, session, momentum",
                        "type": "text/plain"
                      },
                      "key": "type",
                      "value": "momentum"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by activity name, node title, event name",
                        "type": "text/plain"
                      },
                      "key": "usageName",
                      "value": "Course Feedback Form"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, filter the results by course name, momentum tile, live learning name",
                        "type": "text/plain"
                      },
                      "key": "contentName",
                      "value": "Introduction to Safety"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, controls whether the field\u2019s data is included",
                        "type": "text/plain"
                      },
                      "key": "withFields",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12346\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "d47c845c-512d-47bd-af67-0c6c7aaeb8b8",
          "name": "Form Details",
          "request": {
            "name": "Form Details",
            "description": {
              "content": "Retrieve details of a specific form including its fields and configuration.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data,\nor pass `disablePolling=true` to process the request synchronously.\n\nAn unknown `formId` returns HTTP 200 with `{\"status\": \"Invalid form ID\", \"requestid\": N}` and no `data` key.\n\n### URL Parameters\n\n- `formId` \u2014 **Required** integer, the ID of the form to retrieve.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "form",
                ":formId"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                    "type": "text/plain"
                  },
                  "key": "disablePolling",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12347"
                }
              ],
              "variable": [
                {
                  "type": "any",
                  "value": "",
                  "key": "formId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "form",
                    ":formId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                        "type": "text/plain"
                      },
                      "key": "disablePolling",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12347"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "formId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12347,\n    \"data\": {\n        \"id\": 5,\n        \"type\": \"momentum\",\n        \"usingtemplateid\": null,\n        \"usageid\": 2001,\n        \"created_at\": \"2024-05-15T10:00:00.000000Z\",\n        \"updated_at\": \"2024-05-15T10:00:00.000000Z\",\n        \"deleted_at\": null,\n        \"fields\": [\n            {\n                \"id\": 1,\n                \"formid\": 5,\n                \"label\": \"Course Name\",\n                \"order\": 0,\n                \"type\": \"Text(Single line)\",\n                \"uuid\": \"a1b2c3d4-e5f6-4890-9234-567890abcdef\",\n                \"settings\": {\n                    \"label\": {\n                        \"lingo\": \"acorn_forms.labels.label\",\n                        \"class\": \"Forms\\\\Models\\\\Form\\\\Field\\\\Setting\\\\Label\",\n                        \"required\": true,\n                        \"type\": \"label\",\n                        \"value\": \"Course Name\"\n                    },\n                    \"description\": {\n                        \"lingo\": \"acorn_forms.labels.description\",\n                        \"class\": \"Forms\\\\Models\\\\Form\\\\Field\\\\Setting\\\\Description\",\n                        \"value\": \"\",\n                        \"type\": \"html\",\n                        \"id\": 1\n                    },\n                    \"helptext\": {\n                        \"lingo\": \"acorn_forms.labels.helptext\",\n                        \"class\": \"Forms\\\\Models\\\\Form\\\\Field\\\\Setting\\\\Helptext\",\n                        \"value\": \"\",\n                        \"type\": \"text\",\n                        \"id\": 2\n                    },\n                    \"divider\": {\n                        \"type\": \"divider\"\n                    },\n                    \"required\": {\n                        \"lingo\": \"acorn_forms.labels.validation\",\n                        \"helptext_lingo\": \"\",\n                        \"class\": \"Forms\\\\Models\\\\Form\\\\Field\\\\Setting\\\\Validation\",\n                        \"value\": \"\",\n                        \"type\": \"checkbox\"\n                    },\n                    \"dependency\": {\n                        \"lingo\": \"acorn_forms.labels.dependency\",\n                        \"helptext_lingo\": \"acorn_forms.details.add_dependencies_to_this_question\",\n                        \"class\": \"Forms\\\\Models\\\\Form\\\\Field\\\\Setting\\\\Dependency\",\n                        \"value\": \"\",\n                        \"type\": \"dependency\"\n                    }\n                }\n            }\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "form",
                    ":formId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                        "type": "text/plain"
                      },
                      "key": "disablePolling",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12347"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "formId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12347\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "8d62e49f-5745-4179-963c-da864ba30a67",
          "name": "Submissions List",
          "request": {
            "name": "Submissions List",
            "description": {
              "content": "Retrieve a list of form submissions in the tenancy.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.\n\nOnly submitted submissions are returned \u2014 in-progress submissions and submissions from deleted users are excluded.\n\nIf the form is anonymous, `userid` is removed from each submission and all `user` fields are returned as `\"Anonymous\"`.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "submissions"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter submissions by form ID",
                    "type": "text/plain"
                  },
                  "key": "formId",
                  "value": "12001"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, filter submissions by user ID",
                    "type": "text/plain"
                  },
                  "key": "userId",
                  "value": "456"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12348"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, earliest submission time (submissiontime) to include, iso 8601 format",
                    "type": "text/plain"
                  },
                  "key": "startTime",
                  "value": "2023-10-30T01:00:01.000000Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, latest submission time (submissiontime) to include, iso 8601 format",
                    "type": "text/plain"
                  },
                  "key": "endTime",
                  "value": "2023-10-30T01:00:01.000000Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "bool - optional, controls whether the field response data is included",
                    "type": "text/plain"
                  },
                  "key": "withResponses",
                  "value": "true"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "submissions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter submissions by form ID",
                        "type": "text/plain"
                      },
                      "key": "formId",
                      "value": "12001"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter submissions by user ID",
                        "type": "text/plain"
                      },
                      "key": "userId",
                      "value": "456"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12348"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, earliest submission time (submissiontime) to include, iso 8601 format",
                        "type": "text/plain"
                      },
                      "key": "startTime",
                      "value": "2023-10-30T01:00:01.000000Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, latest submission time (submissiontime) to include, iso 8601 format",
                        "type": "text/plain"
                      },
                      "key": "endTime",
                      "value": "2023-10-30T01:00:01.000000Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, controls whether the field response data is included",
                        "type": "text/plain"
                      },
                      "key": "withResponses",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12348,\n    \"data\": [\n        {\n            \"id\": 349,\n            \"formid\": 192,\n            \"userid\": 456,\n            \"starttime\": 1698627601,\n            \"submissiontime\": 1698627617,\n            \"created_at\": \"2023-10-30T00:53:46.000000Z\",\n            \"updated_at\": \"2023-10-30T01:00:18.000000Z\",\n            \"deleted_at\": null,\n            \"user\": {\n                \"id\": 456,\n                \"username\": \"sherlock.holmes@example.com\",\n                \"firstname\": \"Sherlock\",\n                \"lastname\": \"Holmes\",\n                \"email\": \"sherlock.holmes@example.com\"\n            },\n            \"responses\": [\n                {\n                    \"id\": 1342,\n                    \"submissionid\": 349,\n                    \"fieldid\": 581,\n                    \"response\": \"[{\\\"id\\\":\\\"0\\\",\\\"content\\\":\\\"A\\\"},{\\\"id\\\":\\\"1\\\",\\\"content\\\":\\\"B\\\"},{\\\"id\\\":\\\"2\\\",\\\"content\\\":\\\"C\\\"}]\",\n                    \"metadata\": null,\n                    \"created_at\": \"2023-10-30T01:00:06.000000Z\",\n                    \"updated_at\": \"2023-10-30T01:00:06.000000Z\",\n                    \"deleted_at\": null,\n                    \"parsed_response\": [\n                        {\n                            \"id\": \"0\",\n                            \"content\": \"A\"\n                        },\n                        {\n                            \"id\": \"1\",\n                            \"content\": \"B\"\n                        },\n                        {\n                            \"id\": \"2\",\n                            \"content\": \"C\"\n                        }\n                    ]\n                },\n                {\n                    \"id\": 1345,\n                    \"submissionid\": 349,\n                    \"fieldid\": 573,\n                    \"response\": \"Excellent course, very informative.\",\n                    \"metadata\": null,\n                    \"created_at\": \"2023-10-30T01:00:08.000000Z\",\n                    \"updated_at\": \"2023-10-30T01:00:11.000000Z\",\n                    \"deleted_at\": null,\n                    \"parsed_response\": \"Excellent course, very informative.\"\n                }\n            ]\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "submissions"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter submissions by form ID",
                        "type": "text/plain"
                      },
                      "key": "formId",
                      "value": "12001"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, filter submissions by user ID",
                        "type": "text/plain"
                      },
                      "key": "userId",
                      "value": "456"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12348"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, earliest submission time (submissiontime) to include, iso 8601 format",
                        "type": "text/plain"
                      },
                      "key": "startTime",
                      "value": "2023-10-30T01:00:01.000000Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, latest submission time (submissiontime) to include, iso 8601 format",
                        "type": "text/plain"
                      },
                      "key": "endTime",
                      "value": "2023-10-30T01:00:01.000000Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, controls whether the field response data is included",
                        "type": "text/plain"
                      },
                      "key": "withResponses",
                      "value": "true"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12348\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "d3703629-1f22-4ae6-ade9-f79f6fe6f50c",
          "name": "Submission Details",
          "request": {
            "name": "Submission Details",
            "description": {
              "content": "Retrieve the details of a specific form submission including all field values.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data,\nor pass `disablePolling=true` to process the request synchronously.\n\nAn unknown `submissionId` returns HTTP 200 with `{\"status\": \"Invalid submission ID\", \"requestid\": N}` and no `data` key.\n\nIf the form is anonymous, `userid` is removed from the submission and all `user` fields are returned as `\"Anonymous\"`.\n\n### URL Parameters\n\n- `submissionId` \u2014 **Required** integer, the ID of the submission to retrieve.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "submission",
                ":submissionId"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                    "type": "text/plain"
                  },
                  "key": "disablePolling",
                  "value": "true"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12349"
                }
              ],
              "variable": [
                {
                  "type": "any",
                  "value": "",
                  "key": "submissionId",
                  "disabled": false,
                  "description": {
                    "content": "(Required) ",
                    "type": "text/plain"
                  }
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "submission",
                    ":submissionId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                        "type": "text/plain"
                      },
                      "key": "disablePolling",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12349"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "submissionId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12349,\n    \"data\": {\n        \"id\": 1,\n        \"formid\": 1,\n        \"userid\": 456,\n        \"starttime\": \"2024-01-15T09:30:00+00:00\",\n        \"submissiontime\": \"2024-01-15T09:30:16+00:00\",\n        \"created_at\": \"2024-01-15T09:30:00.000000Z\",\n        \"updated_at\": \"2024-01-15T09:30:16.000000Z\",\n        \"deleted_at\": null,\n        \"user\": {\n            \"id\": 456,\n            \"username\": \"sherlock.holmes@example.com\",\n            \"firstname\": \"Sherlock\",\n            \"lastname\": \"Holmes\",\n            \"email\": \"sherlock.holmes@example.com\"\n        },\n        \"responses\": [\n            {\n                \"id\": 1,\n                \"submissionid\": 1,\n                \"fieldid\": 10,\n                \"response\": \"[{\\\"id\\\":\\\"0\\\",\\\"content\\\":\\\"A\\\"},{\\\"id\\\":\\\"1\\\",\\\"content\\\":\\\"B\\\"},{\\\"id\\\":\\\"2\\\",\\\"content\\\":\\\"C\\\"}]\",\n                \"metadata\": null,\n                \"created_at\": \"2024-01-15T09:30:06.000000Z\",\n                \"updated_at\": \"2024-01-15T09:30:06.000000Z\",\n                \"deleted_at\": null,\n                \"parsed_response\": [\n                    {\n                        \"id\": \"0\",\n                        \"content\": \"A\"\n                    },\n                    {\n                        \"id\": \"1\",\n                        \"content\": \"B\"\n                    },\n                    {\n                        \"id\": \"2\",\n                        \"content\": \"C\"\n                    }\n                ]\n            },\n            {\n                \"id\": 2,\n                \"submissionid\": 1,\n                \"fieldid\": 11,\n                \"response\": \"[{\\\"itemid\\\":\\\"0\\\",\\\"itemcontent\\\":\\\"1\\\",\\\"optionid\\\":\\\"1\\\",\\\"optioncontent\\\":\\\"b\\\"},{\\\"itemid\\\":\\\"1\\\",\\\"itemcontent\\\":\\\"2\\\",\\\"optionid\\\":\\\"0\\\",\\\"optioncontent\\\":\\\"a\\\"}]\",\n                \"metadata\": null,\n                \"created_at\": \"2024-01-15T09:30:06.000000Z\",\n                \"updated_at\": \"2024-01-15T09:30:14.000000Z\",\n                \"deleted_at\": null,\n                \"parsed_response\": [\n                    {\n                        \"itemid\": \"0\",\n                        \"itemcontent\": \"1\",\n                        \"optionid\": \"1\",\n                        \"optioncontent\": \"b\"\n                    },\n                    {\n                        \"itemid\": \"1\",\n                        \"itemcontent\": \"2\",\n                        \"optionid\": \"0\",\n                        \"optioncontent\": \"a\"\n                    }\n                ]\n            },\n            {\n                \"id\": 3,\n                \"submissionid\": 1,\n                \"fieldid\": 12,\n                \"response\": \"Excellent course, very informative.\",\n                \"metadata\": null,\n                \"created_at\": \"2024-01-15T09:30:08.000000Z\",\n                \"updated_at\": \"2024-01-15T09:30:11.000000Z\",\n                \"deleted_at\": null,\n                \"parsed_response\": \"Excellent course, very informative.\"\n            },\n            {\n                \"id\": 4,\n                \"submissionid\": 1,\n                \"fieldid\": 13,\n                \"response\": \"Would recommend to colleagues.\",\n                \"metadata\": null,\n                \"created_at\": \"2024-01-15T09:30:12.000000Z\",\n                \"updated_at\": \"2024-01-15T09:30:12.000000Z\",\n                \"deleted_at\": null,\n                \"parsed_response\": \"Would recommend to colleagues.\"\n            },\n            {\n                \"id\": 5,\n                \"submissionid\": 1,\n                \"fieldid\": 14,\n                \"response\": \"8\",\n                \"metadata\": null,\n                \"created_at\": \"2024-01-15T09:30:15.000000Z\",\n                \"updated_at\": \"2024-01-15T09:30:15.000000Z\",\n                \"deleted_at\": null,\n                \"parsed_response\": \"8\"\n            }\n        ]\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "submission",
                    ":submissionId"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "bool - optional, if true the request is processed synchronously and the response contains no requestid, default false",
                        "type": "text/plain"
                      },
                      "key": "disablePolling",
                      "value": "true"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12349"
                    }
                  ],
                  "variable": [
                    {
                      "disabled": false,
                      "description": {
                        "content": "(Required) ",
                        "type": "text/plain"
                      },
                      "type": "any",
                      "value": "",
                      "key": "submissionId"
                    }
                  ]
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12349\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "External Learnings",
      "description": "External learnings are qualifications, certifications, or training that users have completed outside of the LMS. Each record includes details about the user, the qualification or training, and when it was completed.",
      "item": [
        {
          "id": "02b5a4ca-461f-4d7d-926c-e7a8a3455060",
          "name": "External Learnings",
          "request": {
            "name": "External Learnings",
            "description": {
              "content": "Retrieve external learning records for users in the tenancy. External learnings are qualifications, certifications, or training completed outside of the LMS. Each record's keys are the tenancy's configured external-learning form-field labels (the labels in the example are not a fixed schema), with `userid` first; unanswered date fields are `\"\"`.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "externallearnings"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12345"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "externallearnings"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12351,\n    \"data\": [\n        {\n            \"userid\": 456,\n            \"Learning Activity\": \"First Aid Certificate\",\n            \"Provider\": \"St John Ambulance\",\n            \"Details\": \"Two-day practical course\",\n            \"Capabilities\": [\n                66063\n            ],\n            \"Learning Type\": \"Certificate\",\n            \"Degree\": null,\n            \"Date Started\": null,\n            \"Date Completed\": \"2023-06-15T00:00:00+00:00\",\n            \"License\": null,\n            \"Expiry Date\": \"2026-06-15T00:00:00+00:00\",\n            \"Certificate\": \"FA-2023-12345\",\n            \"Status\": \"Approved\"\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "externallearnings"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12351\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "CPD Points",
      "description": "CPD points are Continuing Professional Development credits earned by users in the LMS for completing learning activities. Each record includes details about the user and their accrued points.",
      "item": [
        {
          "id": "4c334818-21c2-4b36-89e2-0e59af4a0a74",
          "name": "User CPD Points",
          "request": {
            "name": "User CPD Points",
            "description": {
              "content": "Retrieve Continuing Professional Development (CPD) points earned by users in the tenancy.\n\nThis endpoint is asynchronous: the first call returns `{\"status\": \"Processing\", \"requestid\": N}`.\nPoll the endpoint with `?requestid=N` until the response returns `status: \"Complete\"` with the data.\n\nCPD category keys in `cpdpoints` have spaces replaced by underscores (e.g. `Professional_Skills`).\nEach completion's `cpdpoints` object contains all categories \u2014 unearned categories are the integer `0`.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_tenancymanagement",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "usercpdpoints"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [
                {
                  "disabled": true,
                  "description": {
                    "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                    "type": "text/plain"
                  },
                  "key": "requestid",
                  "value": "12345"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or after this time are included. Invalid values return HTTP 200 with {\"status\": \"Failed\", \"errors\": {\"start\": \"Please provide a valid start date in ISO 8601 date & time format.\"}}",
                    "type": "text/plain"
                  },
                  "key": "start",
                  "value": "2026-01-01T00:00:00Z"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or before this time are included. Invalid values return a Failed envelope like start",
                    "type": "text/plain"
                  },
                  "key": "end",
                  "value": "2026-06-30T23:59:59Z"
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "body": {},
            "auth": null
          },
          "response": [
            {
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "usercpdpoints"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or after this time are included. Invalid values return HTTP 200 with {\"status\": \"Failed\", \"errors\": {\"start\": \"Please provide a valid start date in ISO 8601 date & time format.\"}}",
                        "type": "text/plain"
                      },
                      "key": "start",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or before this time are included. Invalid values return a Failed envelope like start",
                        "type": "text/plain"
                      },
                      "key": "end",
                      "value": "2026-06-30T23:59:59Z"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Complete\",\n    \"requestid\": 12345,\n    \"data\": [\n        {\n            \"firstname\": \"Sherlock\",\n            \"lastname\": \"Holmes\",\n            \"username\": \"sherlock.holmes@example.com\",\n            \"userid\": 456,\n            \"totalcpdpoints\": \"12.00\",\n            \"cpdpoints\": {\n                \"Ethics\": \"2.00\",\n                \"Professional_Skills\": \"10.00\"\n            },\n            \"completions\": [\n                {\n                    \"cpdpoints\": {\n                        \"Ethics\": 0,\n                        \"Professional_Skills\": \"10.00\"\n                    },\n                    \"contentid\": 123,\n                    \"contenttype\": \"Course\",\n                    \"contentname\": \"Introduction to Safety\",\n                    \"completionstatus\": \"Completed\",\n                    \"timeenrolled\": \"2024-01-08T09:00:00+00:00\",\n                    \"timestarted\": \"2024-01-10T11:15:00+00:00\",\n                    \"timecompleted\": \"2024-01-15T10:30:00+00:00\"\n                },\n                {\n                    \"cpdpoints\": {\n                        \"Ethics\": \"2.00\",\n                        \"Professional_Skills\": 0\n                    },\n                    \"contentid\": 234,\n                    \"contenttype\": \"Course\",\n                    \"contentname\": \"Ethics Fundamentals\",\n                    \"completionstatus\": \"Completed\",\n                    \"timeenrolled\": \"2024-02-01T09:00:00+00:00\",\n                    \"timestarted\": \"2024-02-02T11:15:00+00:00\",\n                    \"timecompleted\": \"2024-02-05T10:30:00+00:00\"\n                }\n            ]\n        },\n        {\n            \"firstname\": \"John\",\n            \"lastname\": \"Watson\",\n            \"username\": \"john.watson@example.com\",\n            \"userid\": 457,\n            \"totalcpdpoints\": 0,\n            \"cpdpoints\": {\n                \"Ethics\": \"0.00\",\n                \"Professional_Skills\": \"0.00\"\n            },\n            \"completions\": []\n        }\n    ]\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Processing Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "usercpdpoints"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or after this time are included. Invalid values return HTTP 200 with {\"status\": \"Failed\", \"errors\": {\"start\": \"Please provide a valid start date in ISO 8601 date & time format.\"}}",
                        "type": "text/plain"
                      },
                      "key": "start",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or before this time are included. Invalid values return a Failed envelope like start",
                        "type": "text/plain"
                      },
                      "key": "end",
                      "value": "2026-06-30T23:59:59Z"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Processing\",\n    \"requestid\": 12345\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "name": "Validation Error - start (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_tenancymanagement",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "usercpdpoints"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [
                    {
                      "disabled": true,
                      "description": {
                        "content": "integer - optional, if included the endpoint will return the status and results of the request with the specified requestid. If not included a new request will be submitted and its requestid will be returned",
                        "type": "text/plain"
                      },
                      "key": "requestid",
                      "value": "12345"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or after this time are included. Invalid values return HTTP 200 with {\"status\": \"Failed\", \"errors\": {\"start\": \"Please provide a valid start date in ISO 8601 date & time format.\"}}",
                        "type": "text/plain"
                      },
                      "key": "start",
                      "value": "2026-01-01T00:00:00Z"
                    },
                    {
                      "disabled": true,
                      "description": {
                        "content": "string - optional, ISO 8601 with an explicit offset (Z or +00:00). Only completions completed at or before this time are included. Invalid values return a Failed envelope like start",
                        "type": "text/plain"
                      },
                      "key": "end",
                      "value": "2026-06-30T23:59:59Z"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n    \"status\": \"Failed\",\n    \"errors\": {\n        \"start\": \"Please provide a valid start date in ISO 8601 date & time format.\"\n    }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    },
    {
      "name": "Login Deep Link",
      "description": "Exchange a username for a short-lived, single-use login URL that signs the user in without a password. Built for portal and intranet integrations \u2014 \"continue your training\" buttons, or embedding the LMS behind another system's login.",
      "item": [
        {
          "id": "81dec019-fe93-45fd-951e-a29ca7241468",
          "name": "Login Deep Link",
          "request": {
            "name": "Login Deep Link",
            "description": {
              "content": "Exchanges a username for a short-lived, effectively single-use login URL. Opening the URL signs\nthe user in without a password and lands them on a target page. Built for portal and intranet\nintegrations: \"continue your training\" buttons, or embedding the LMS behind another system's\nlogin.\n\nThis endpoint is always synchronous.\n\n### Request body fields\n\n- `username` (required) \u2014 the user to create the login link for. The user must belong to the\n  tenancy in the URL; an all-tenancies key (`tenancy_id` 0) may target users in any tenancy.\n- `wantsurl` (optional) \u2014 where to land the user after sign-in. Only same-domain URLs are\n  honoured; anything else falls back to the dashboard (open-redirect protection).\n\n### The login URL is a credential\n\n- Deliver it to the user immediately (redirect to it or open it); never log it, email it, or\n  store it.\n- It expires after the site's configured session timeout, measured from creation.\n- It is effectively single-use: once the user accesses the site after the link was issued\n  (including via the link itself), the link stops working. Generate a fresh link per login.\n- If the browser is already signed in as that user, the link simply redirects (no re-login).\n- The link is cryptographically signed; its parameters cannot be forged or altered.\n\n### Restrictions\n\n- Site administrator and Acorn administrator accounts are refused \u2014 deep links cannot be\n  created for privileged accounts.\n- The user must exist in the tenancy addressed by the URL.\n\n### Errors\n\nValidation problems return the standard envelope with `status: \"Failed\"` and an `errors`\nobject keyed by field \u2014 see the response examples.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "local",
                "acorn_authentication",
                "index.php",
                "api",
                "1.2",
                "tenancies",
                "{{tenancy_id}}",
                "logindeeplink"
              ],
              "host": [
                "{{base_url}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"user@example.com\",\n  \"wantsurl\": \"https://example.acornplms.com/my/\"\n}",
              "options": {
                "raw": {
                  "headerFamily": "json",
                  "language": "json"
                }
              }
            },
            "auth": null
          },
          "response": [
            {
              "id": "1143ddbf-87ac-48cf-8612-f837c382f00a",
              "name": "Success Example (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_authentication",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "logindeeplink"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"user@example.com\",\n  \"wantsurl\": \"https://example.acornplms.com/my/\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Login URL created\",\n  \"data\": {\n    \"userid\": 3,\n    \"username\": \"sherlock.holmes@example.com\",\n    \"email\": \"sherlock.holmes@example.com\",\n    \"firstname\": \"Sherlock\",\n    \"lastname\": \"Holmes\",\n    \"loginUrl\": \"https://example.acornplms.com/local/acorn_authentication/index.php/deeplink_login?wantsurl=https%3A%2F%2Fexample.acornplms.com%2Fmy%2F&userid=3&tokenCreatedAt=1705314600&hash=a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2c3d4e5f6a7b8c9d0a1b2\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f68d8c64-05d8-4115-b28d-7b992002b689",
              "name": "Validation Error \u2014 missing username (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_authentication",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "logindeeplink"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"wantsurl\": \"https://example.acornplms.com/my/\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"username\": [\n      \"You must provide a username.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e5165f4e-64d5-4a98-8c1f-7d5a465f5fe7",
              "name": "Validation Error \u2014 unknown user (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_authentication",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "logindeeplink"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"ghost@example.com\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"username\": [\n      \"The user does not exist in this tenancy.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "3d34bcb6-c3f3-4109-bc56-7e3c1519eca9",
              "name": "Validation Error \u2014 privileged account (200 OK)",
              "originalRequest": {
                "url": {
                  "path": [
                    "local",
                    "acorn_authentication",
                    "index.php",
                    "api",
                    "1.2",
                    "tenancies",
                    "{{tenancy_id}}",
                    "logindeeplink"
                  ],
                  "host": [
                    "{{base_url}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "key": "Content-Type",
                    "value": "application/json"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  },
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"username\": \"admin@example.com\"\n}",
                  "options": {
                    "raw": {
                      "headerFamily": "json",
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-Ratelimit-Limit",
                  "value": "60"
                },
                {
                  "disabled": true,
                  "description": {
                    "content": "",
                    "type": "text/plain"
                  },
                  "key": "X-RateLimit-Remaining",
                  "value": "59"
                }
              ],
              "body": "{\n  \"status\": \"Failed\",\n  \"errors\": {\n    \"username\": [\n      \"Permission to login with the following username denied: admin@example.com\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ]
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "event": [],
  "info": {
    "_postman_id": "22db29d8-ca3c-4f80-9c70-770111125f5c",
    "name": "Acorn REST API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": {
      "content": "**Overview**\n\nThe Acorn LMS's API is organised around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and authentication.\n\nTo start using the API, you will first need to setup your credentials. Acorn will provide you with a Base URL, Tenancy ID, Username and Initial Refresh Token. These can be used to access all API endpoints. To start this process, please contact [Acorn Support](https://help.acorn.works).\n\n**Rate Limiting**\n\nTo protect our API from abuse and ensure fair usage, we enforce a rate limit of **60 requests per minute per API key**. If an API key exceeds that limit, the server returns an HTTP 429 (Too Many Requests) response. If you have a use case that requires a higher rate limit please contact [Acorn Support](https://help.acorn.works).\n\n## REST APIs\n\nThe REST APIs are the core resource endpoints for managing users, content, completions, attendance, transactions, and reporting within the LMS. Endpoints share the `{{base_url}}/local/<plugin>/index.php/api/1.2/` base path, accept form-encoded request bodies, and return JSON-encoded responses with standard HTTP status codes.",
      "type": "text/plain"
    }
  }
}