From 48d6acba97dfacf4d0148fb77b87bf9f363fa9dc Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 27 Feb 2021 08:53:07 +1100 Subject: [PATCH] Add docs for API roles --- docs/assets/images/api/api_roles.png | Bin 0 -> 23499 bytes docs/assets/images/api/api_roles_2.png | Bin 0 -> 31333 bytes docs/extend/api.md | 28 ++++++++++++++++++++++++- docs/releases/0.1.7.md | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 docs/assets/images/api/api_roles.png create mode 100644 docs/assets/images/api/api_roles_2.png diff --git a/docs/assets/images/api/api_roles.png b/docs/assets/images/api/api_roles.png new file mode 100644 index 0000000000000000000000000000000000000000..647ff0de5c5bcce2f45d7e9e8133c371139865b5 GIT binary patch literal 23499 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 literal 0 HcmV?d00001 diff --git a/docs/assets/images/api/api_roles_2.png b/docs/assets/images/api/api_roles_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c13b646fa0162b3846a7913059875601576b799d GIT binary patch literal 31333 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 z®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 EU(-yDp#T5? literal 0 HcmV?d00001 diff --git a/docs/extend/api.md b/docs/extend/api.md index 07b62d8..6f439ee 100644 --- a/docs/extend/api.md +++ b/docs/extend/api.md @@ -75,4 +75,30 @@ headers = { 'AUTHORIZATION': f'Token {token}' } response = request.get('http://localhost:8080/api/part/', data=data, headers=headers) -``` \ No newline at end of file +``` + +## Authorization + +### User Roles + +Users can only perform REST API actions which align with their assigned [role permissions](../../admin/permissions/#roles). +Once a user has *authenticated* via the API, a list of the available roles can be retrieved from: + +`/api/user/roles/` + +For example, when accessing the API from a *superuser* account: + +{% with id="api_roles", url="api/api_roles.png", description="API superuser roles" %} +{% include 'img.html' %} +{% endwith %} + +Or, when accessing the API from an account which has read-only permissions: + +{% with id="api_roles_2", url="api/api_roles_2.png", description="API user roles" %} +{% include 'img.html' %} +{% endwith %} + +### Permission Denied + +If an API action outside of the user's role(s) is attempted, the server will respond with a 403 permission error message. + diff --git a/docs/releases/0.1.7.md b/docs/releases/0.1.7.md index 513abcd..785a148 100644 --- a/docs/releases/0.1.7.md +++ b/docs/releases/0.1.7.md @@ -31,7 +31,7 @@ Label printing functionality has been simplified and brought into line with the ### API Permissions -[#1363](https://github.com/inventree/InvenTree/pull/1363) enforces user role permissions onto the REST API endpoints. Authenticated users can now only perform REST actions which align with their allocated role(s). +[#1363](https://github.com/inventree/InvenTree/pull/1363) enforces user role permissions onto the REST API endpoints. Authenticated users can now only perform REST actions which align with their allocated role(s). Refer to the [API documentation](../../extend/api/#authorization) for further information. ## Major Bug Fixes | PR | Description |