{
	"info": {
		"_postman_id": "606af599-3dec-46c8-9464-f52a7fd8f5b7",
		"name": "SCIM Nextcloud App Collection (Bearer Token)",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "Users",
			"item": [
				{
					"name": "Create a single user",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 201\", () => {",
									"    pm.response.to.have.status(201);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
									"    pm.expect(pm.response.json().userName).to.eql(\"createdtestuser\");",
									"});",
									"",
									"pm.test(\"Response body contains a valid non-null user ID (the ID of the user which was created)\", () => {",
									"    pm.expect(pm.response.json().id).to.not.be.null;",
									"});",
									"",
									"pm.collectionVariables.set(\"testUserId\", pm.response.json().id);"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "default"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"userName\": \"createdtestuser\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{url}}/bearer/Users",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Users"
							]
						}
					},
					"response": []
				},
				{
					"name": "Read a single user",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains the user ID of the user we want to read\", () => {",
									"    pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testUserId'));",
									"});",
									"",
									"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
									"    pm.expect(pm.response.json().userName).to.eql(\"createdtestuser\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{url}}/bearer/Users/{{testUserId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Users",
								"{{testUserId}}"
							]
						}
					},
					"response": []
				},
				{
					"name": "Read all users",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json().Resources).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains user with userName \\\"createdtestuser\\\"\", () => {",
									"    var resources = pm.response.json().Resources.map(x => x.userName);",
									"    pm.expect(resources).to.contain(\"createdtestuser\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{url}}/bearer/Users",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Users"
							]
						}
					},
					"response": []
				},
				{
					"name": "Update a single user",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains the user ID of the user we want to read\", () => {",
									"    pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testUserId'));",
									"});",
									"",
									"pm.test(\"Response body contains user with displayName \\\"updatedtestuser\\\"\", () => {",
									"    pm.expect(pm.response.json().displayName).to.eql(\"updatedtestuser\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "PUT",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "default"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"displayName\": \"updatedtestuser\",\n    \"active\": false\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{url}}/bearer/Users/{{testUserId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Users",
								"{{testUserId}}"
							]
						}
					},
					"response": []
				},
				{
					"name": "Delete a single user",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 204\", () => {",
									"    pm.response.to.have.status(204);",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "DELETE",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "default"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"userName\": \"updatedtestuser\"\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{url}}/bearer/Users/{{testUserId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Users",
								"{{testUserId}}"
							]
						}
					},
					"response": []
				}
			],
			"event": [
				{
					"listen": "prerequest",
					"script": {
						"type": "text/javascript",
						"exec": [
							""
						]
					}
				},
				{
					"listen": "test",
					"script": {
						"type": "text/javascript",
						"exec": [
							""
						]
					}
				}
			]
		},
		{
			"name": "Groups",
			"item": [
				{
					"name": "Create a single group",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 201\", () => {",
									"    pm.response.to.have.status(201);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
									"    pm.expect(pm.response.json().displayName).to.eql(\"createdtestgroup\");",
									"});",
									"",
									"pm.test(\"Response body contains a valid non-null group ID (the ID of the group which was created)\", () => {",
									"    pm.expect(pm.response.json().id).to.not.be.null;",
									"});",
									"",
									"pm.collectionVariables.set(\"testGroupId\", pm.response.json().id);"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "POST",
						"header": [
							{
								"key": "Content-Type",
								"value": "application/json",
								"type": "default"
							}
						],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"displayName\": \"createdtestgroup\",\n    \"members\": []\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{url}}/bearer/Groups",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Groups"
							]
						}
					},
					"response": []
				},
				{
					"name": "Read a single group",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains the group ID of the group we want to read\", () => {",
									"    pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testGroupId'));",
									"});",
									"",
									"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
									"    pm.expect(pm.response.json().displayName).to.eql(\"createdtestgroup\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{url}}/bearer/Groups/{{testGroupId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Groups",
								"{{testGroupId}}"
							]
						}
					},
					"response": []
				},
				{
					"name": "Read all groups",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json().Resources).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains group with displayName \\\"createdtestgroup\\\"\", () => {",
									"    var resources = pm.response.json().Resources.map(x => x.displayName);",
									"    pm.expect(resources).to.contain(\"createdtestgroup\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "GET",
						"header": [],
						"url": {
							"raw": "{{url}}/bearer/Groups",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Groups"
							]
						}
					},
					"response": []
				},
				{
					"name": "Update a single group",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 200\", () => {",
									"    pm.response.to.have.status(200);",
									"});",
									"",
									"pm.test(\"Response body is not empty\", () => {",
									"    pm.expect(pm.response.json()).to.not.be.empty;",
									"});",
									"",
									"pm.test(\"Response body contains the group ID of the group we want to read\", () => {",
									"    pm.expect(pm.response.json().id).to.eql(pm.collectionVariables.get('testGroupId'));",
									"});",
									"",
									"pm.test(\"Response body contains group with displayName \\\"updatedtestgroup\\\"\", () => {",
									"    pm.expect(pm.response.json().displayName).to.eql(\"updatedtestgroup\");",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "PUT",
						"header": [],
						"body": {
							"mode": "raw",
							"raw": "{\n    \"displayName\": \"updatedtestgroup\",\n    \"members\": []\n}",
							"options": {
								"raw": {
									"language": "json"
								}
							}
						},
						"url": {
							"raw": "{{url}}/bearer/Groups/{{testGroupId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Groups",
								"{{testGroupId}}"
							]
						}
					},
					"response": []
				},
				{
					"name": "Delete a single group",
					"event": [
						{
							"listen": "test",
							"script": {
								"exec": [
									"pm.test(\"Response status code is 204\", () => {",
									"    pm.response.to.have.status(204);",
									"});"
								],
								"type": "text/javascript"
							}
						}
					],
					"request": {
						"method": "DELETE",
						"header": [],
						"url": {
							"raw": "{{url}}/bearer/Groups/{{testGroupId}}",
							"host": [
								"{{url}}"
							],
							"path": [
								"bearer",
								"Groups",
								"{{testGroupId}}"
							]
						}
					},
					"response": []
				}
			],
			"event": [
				{
					"listen": "prerequest",
					"script": {
						"type": "text/javascript",
						"exec": [
							""
						]
					}
				},
				{
					"listen": "test",
					"script": {
						"type": "text/javascript",
						"exec": [
							""
						]
					}
				}
			]
		}
	],
	"auth": {
		"type": "bearer",
		"bearer": [
			{
				"key": "token",
				"value": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYWRtaW4ifQ.Oetm7xvhkYbiItRiqNx-z7LZ6ZkmDe1z_95igbPUSjA",
				"type": "string"
			}
		]
	},
	"event": [
		{
			"listen": "prerequest",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		},
		{
			"listen": "test",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		}
	],
	"variable": [
		{
			"key": "testUserId",
			"value": null
		},
		{
			"key": "testGroupId",
			"value": null
		},
		{
			"key": "url",
			"value": "http://localhost:8888/index.php/apps/scimserviceprovider",
			"type": "default"
		}
	]
}