export interface CreateSecurityGroupRequest { title: string owner: { id: string // Organization ID } } type Links = { rel: string; href: string }[] export type Privilege = 'read' | 'create' | 'update' | 'delete' // eslint-disable-next-line @typescript-eslint/ban-types export type SecurityGroupId = string & {} export interface SecurityGroup { id: SecurityGroupId title: string owner: { id: string // Organization ID } links: Links } interface PaginatedResponse { count: number filters: { page: number 'per-page': number [key: string]: unknown } links: Links } export interface SecurityGroupsResponse extends PaginatedResponse { 'security-groups': SecurityGroup[] } export interface UserWithOrganizations { id: string cn: string sn: string organizations: Array stakeholder: boolean } export interface UsersResponse extends PaginatedResponse { users: { id: string cn: string sn: string }[] } export interface TypesResponse extends PaginatedResponse { 'element-types': { id: string }[] } export type AttributePrivilege = { 'element-type': string attribute: string rights: Privilege[] } export interface AttributePrivilegesResponse extends PaginatedResponse { privileges: AttributePrivilege[] } export type TypePrivilege = { id: string 'element-type': { id: string } rights: Privilege[] } export interface TypePrivilegesResponse extends PaginatedResponse { privileges: TypePrivilege[] }