action dracoon_request_pending_assignments {
label: "Request user-room assignments per group"
description: "### Description: \nRequests a list of user-room assignments by groups that have **NOT** been approved yet \nThese can have the state:\n* **WAITING** \n* **DENIED** \n* **ACCEPTED** \n\n**ACCEPTED** assignments are already removed from the list.\n\n### Precondition:\nNone.\n\n### Postcondition:\nList of user-room assignments is returned.\n\n### Further Information:\nRoom administrators **SHOULD** regularly request pending assingments to provide access to rooms for other users.\n\n### Filtering:\nAll filter fields are connected via logical conjunction (**AND**) \nFilter string syntax: `FIELD_NAME:OPERATOR:VALUE` \n\n\nExample
\n\n`state:eq:WAITING` \nFilter assignments by state `WAITING`.\n\n \n\n### Filtering options:\n\nExpand
\n\n| `FIELD_NAME` | Filter Description | `OPERATOR` | Operator Description | `VALUE` |\n| :--- | :--- | :--- | :--- | :--- |\n| `userId` | User ID filter | `eq` | User ID equals value. | `positive Integer` |\n| `groupId` | Group ID filter | `eq` | Group ID equals value. | `positive Integer` |\n| `roomId` | Room ID filter | `eq` | Room ID equals value. | `positive Integer` |\n| `state` | Assignment state | `eq` | Assignment state equals value. | `WAITING or DENIED` |\n\n \n\n---\n\n### Sorting:\nSort string syntax: `FIELD_NAME:ORDER` \n`ORDER` can be `asc` or `desc`. \nMultiple sort criteria are possible. \nFields are connected via logical conjunction **AND**.\n\n\nExample
\n\n`userId:desc|state:asc` \nSort by `userId` descending **AND** `state` ascending.\n\n \n\n### Sorting options:\n\nExpand
\n\n| `FIELD_NAME` | Description |\n| :--- | :--- |\n| `userId` | User ID |\n| `groupId` | Group ID |\n| `roomId` | Room ID |\n| `state` | State |\n\n "
provider: dracoon
method: GET
path: "/v4/nodes/rooms/pending"
encoding: json
input: {
type: "object"
properties: {
"X-Sds-Auth-Token": {
type: "string"
}
filter: {
type: "string"
}
limit: {
type: "integer"
format: "int32"
}
offset: {
type: "integer"
format: "int32"
}
sort: {
type: "string"
}
}
additionalProperties: false
}
output: {
type: "object"
description: "List of pending assignments"
required: ["items"]
properties: {
items: {
type: "array"
description: "List of pending assignment information"
items: {
type: "object"
description: "Pending assignment information"
required: ["groupInfo", "pendingGroupData", "pendingUserData", "roomId", "roomName", "state", "userInfo"]
properties: {
groupInfo: {
type: "object"
description: "Group information"
required: ["id", "name"]
properties: {
id: {
type: "integer"
format: "int64"
description: "Unique identifier for the group"
}
name: {
type: "string"
description: "Group name"
}
}
}
pendingGroupData: {
type: "object"
description: "Pending group information"
required: ["id", "name"]
properties: {
id: {
type: "integer"
format: "int64"
description: "Unique identifier for the group\n\nuse `id` from `GroupInfo` instead"
}
name: {
type: "string"
description: "Group name\n\nuse `name` from `GroupInfo` instead"
}
}
}
pendingUserData: {
type: "object"
description: "Pending user information"
required: ["displayName", "email", "id", "login"]
properties: {
displayName: {
type: "string"
description: "Display name\n\nuse information from `UserInfo` instead to combine a display name"
}
email: {
type: "string"
description: "Email \n\nuse `email` from `UserInfo` instead"
}
id: {
type: "integer"
format: "int64"
description: "Unique identifier for the user"
}
login: {
type: "string"
description: "User login name"
}
}
}
roomId: {
type: "integer"
format: "int64"
description: "Room ID"
}
roomName: {
type: "string"
description: "Room name"
}
state: {
type: "string"
description: "Acceptance state:\n\n* `ACCEPTED`\n\n* `WAITING`\n\n* `DENIED`"
enum: ["ACCEPTED", "DENIED", "WAITING"]
}
userInfo: {
type: "object"
description: "User information"
required: ["avatarUuid", "firstName", "id", "lastName", "userName", "userType"]
properties: {
avatarUuid: {
type: "string"
description: "🚀 Since v4.11.0\n\nAvatar UUID"
}
displayName: {
type: "string"
description: "🚧 Deprecated since v4.11.0\n\nDisplay name\n\nuse other fields from `UserInfo` instead to combine a display name"
}
email: {
type: "string"
description: "🚀 Since v4.11.0\n\nEmail "
}
firstName: {
type: "string"
description: "🚀 Since v4.11.0\n\nUser first name (mandatory if `userType` is `internal`)"
}
id: {
type: "integer"
format: "int64"
description: "Unique identifier for the user"
}
lastName: {
type: "string"
description: "🚀 Since v4.11.0\n\nUser last name (mandatory if `userType` is `internal`)"
}
title: {
type: "string"
description: "🚧 Deprecated since v4.18.0\n\nJob title"
}
userName: {
type: "string"
description: "🚀 Since v4.13.0\n\nUsername (only returned for `internal` users)"
}
userType: {
type: "string"
description: "🚀 Since v4.11.0\n\nUser type:\n\n* `internal` - ordinary DRACOON user\n\n* `external` - external user without DRACOON account\n\n* `system` - system user (non human 👽)\n\n* `deleted` - deleted DRACOON user"
enum: ["system", "internal", "external", "deleted"]
}
}
}
}
}
}
range: {
type: "object"
description: "Range information"
required: ["limit", "offset", "total"]
properties: {
limit: {
type: "integer"
format: "int64"
description: "Range limit. Maximum 500."
}
offset: {
type: "integer"
format: "int64"
description: "Range offset"
}
total: {
type: "integer"
format: "int64"
description: "Total items available"
}
}
}
}
}
}