# 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"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.struct.com/api-reference/endpoints/permissions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
