# Permissions

Use security endpoint to manage permissions and security settings in the system programmatically. Permissions can be created and added to resource actions to define granular permission control of what users can do in the system

## GET /v1/permissions

> Get all permissions added to the system

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission","format":"uuid"},"PermissionGroupUid":{"type":"string","description":"Uid of group to place permission in","format":"uuid"},"PermissionName":{"type":"string","description":"Name of permission","nullable":true},"Description":{"type":"string","description":"Description of permission","nullable":true},"IsSystemPermission":{"type":"boolean","description":"Is system permission (readonly)"}},"additionalProperties":false,"description":"Representing a permission in the system"}}},"paths":{"/v1/permissions":{"get":{"tags":["Permissions"],"summary":"Get all permissions added to the system","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionModel"}}}}}}}}}}
```

## POST /v1/permissions

> Add permission to system

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission","format":"uuid"},"PermissionGroupUid":{"type":"string","description":"Uid of group to place permission in","format":"uuid"},"PermissionName":{"type":"string","description":"Name of permission","nullable":true},"Description":{"type":"string","description":"Description of permission","nullable":true},"IsSystemPermission":{"type":"boolean","description":"Is system permission (readonly)"}},"additionalProperties":false,"description":"Representing a permission in the system"}}},"paths":{"/v1/permissions":{"post":{"tags":["Permissions"],"summary":"Add permission to system","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionModel"}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## PUT /v1/permissions

> Update a permission

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission","format":"uuid"},"PermissionGroupUid":{"type":"string","description":"Uid of group to place permission in","format":"uuid"},"PermissionName":{"type":"string","description":"Name of permission","nullable":true},"Description":{"type":"string","description":"Description of permission","nullable":true},"IsSystemPermission":{"type":"boolean","description":"Is system permission (readonly)"}},"additionalProperties":false,"description":"Representing a permission in the system"}}},"paths":{"/v1/permissions":{"put":{"tags":["Permissions"],"summary":"Update a permission","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionModel"}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/permissions/{uid}

> Get a specific permission

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission","format":"uuid"},"PermissionGroupUid":{"type":"string","description":"Uid of group to place permission in","format":"uuid"},"PermissionName":{"type":"string","description":"Name of permission","nullable":true},"Description":{"type":"string","description":"Description of permission","nullable":true},"IsSystemPermission":{"type":"boolean","description":"Is system permission (readonly)"}},"additionalProperties":false,"description":"Representing a permission in the system"},"Microsoft.AspNetCore.Mvc.ProblemDetails":{"type":"object","properties":{"Type":{"type":"string","nullable":true},"Title":{"type":"string","nullable":true},"Status":{"type":"integer","format":"int32","nullable":true},"Detail":{"type":"string","nullable":true},"Instance":{"type":"string","nullable":true}},"additionalProperties":{}}}},"paths":{"/v1/permissions/{uid}":{"get":{"tags":["Permissions"],"summary":"Get a specific permission","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionModel"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## DELETE /v1/permissions/{uid}

> Delete a permission

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/permissions/{uid}":{"delete":{"tags":["Permissions"],"summary":"Delete a permission","parameters":[{"name":"uid","in":"path","description":"the Unique id of the permission","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/permissiongroups

> Get all permission groups added to the system

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionGroupModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission group","format":"uuid"},"Name":{"type":"string","description":"Name of permission group","nullable":true},"IsSystemPermissionGroup":{"type":"boolean","description":"Is system permission group (readonly)"}},"additionalProperties":false,"description":"Represents a group of permissions"}}},"paths":{"/v1/permissiongroups":{"get":{"tags":["Permissions"],"summary":"Get all permission groups added to the system","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionGroupModel"}}}}}}}}}}
```

## POST /v1/permissiongroups

> Add permission group to system

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionGroupModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission group","format":"uuid"},"Name":{"type":"string","description":"Name of permission group","nullable":true},"IsSystemPermissionGroup":{"type":"boolean","description":"Is system permission group (readonly)"}},"additionalProperties":false,"description":"Represents a group of permissions"}}},"paths":{"/v1/permissiongroups":{"post":{"tags":["Permissions"],"summary":"Add permission group to system","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionGroupModel"}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## PUT /v1/permissiongroups

> Update a permission group

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionGroupModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission group","format":"uuid"},"Name":{"type":"string","description":"Name of permission group","nullable":true},"IsSystemPermissionGroup":{"type":"boolean","description":"Is system permission group (readonly)"}},"additionalProperties":false,"description":"Represents a group of permissions"}}},"paths":{"/v1/permissiongroups":{"put":{"tags":["Permissions"],"summary":"Update a permission group","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionGroupModel"}}}},"responses":{"200":{"description":"OK"}}}}}}
```

## GET /v1/permissiongroups/{uid}

> Get a specific permission group

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}},"schemas":{"Struct.App.Api.Models.Security.PermissionGroupModel":{"type":"object","properties":{"Uid":{"type":"string","description":"Unique id of permission group","format":"uuid"},"Name":{"type":"string","description":"Name of permission group","nullable":true},"IsSystemPermissionGroup":{"type":"boolean","description":"Is system permission group (readonly)"}},"additionalProperties":false,"description":"Represents a group of permissions"},"Microsoft.AspNetCore.Mvc.ProblemDetails":{"type":"object","properties":{"Type":{"type":"string","nullable":true},"Title":{"type":"string","nullable":true},"Status":{"type":"integer","format":"int32","nullable":true},"Detail":{"type":"string","nullable":true},"Instance":{"type":"string","nullable":true}},"additionalProperties":{}}}},"paths":{"/v1/permissiongroups/{uid}":{"get":{"tags":["Permissions"],"summary":"Get a specific permission group","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Struct.App.Api.Models.Security.PermissionGroupModel"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"}}}}}}}}}
```

## DELETE /v1/permissiongroups/{uid}

> Delete a permission group

```json
{"openapi":"3.0.1","info":{"title":"Struct PIM Public API","version":"1.0"},"tags":[{"name":"Permissions","description":"Use security endpoint to manage permissions and security settings in the system programmatically.\r\nPermissions can be created and added to resource actions to define granular permission control of what users can do in the system"}],"security":[{"ApiKey":[]}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","description":"","name":"Authorization","in":"header"}}},"paths":{"/v1/permissiongroups/{uid}":{"delete":{"tags":["Permissions"],"summary":"Delete a permission group","parameters":[{"name":"uid","in":"path","description":"The unique id of the permission group","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK"}}}}}}
```
