# =============================================== # GROUPS # =============================================== extend type Query { groups: GroupQuery } extend type Mutation { groups: GroupMutation } # ----------------------------------------------- # QUERIES # ----------------------------------------------- type GroupQuery { list( filter: String orderBy: String ): [GroupMinimal] @auth(requires: ["write:groups", "manage:groups", "manage:system"]) single( id: Int! ): Group @auth(requires: ["write:groups", "manage:groups", "manage:system"]) } # ----------------------------------------------- # MUTATIONS # ----------------------------------------------- type GroupMutation { create( name: String! ): GroupResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"]) update( id: Int! name: String! permissions: [String]! pageRules: [PageRuleInput]! ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"]) delete( id: Int! ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"]) assignUser( groupId: Int! userId: Int! ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"]) unassignUser( groupId: Int! userId: Int! ): DefaultResponse @auth(requires: ["write:groups", "manage:groups", "manage:system"]) } # ----------------------------------------------- # TYPES # ----------------------------------------------- type GroupResponse { responseResult: ResponseStatus! group: Group } type GroupMinimal { id: Int! name: String! isSystem: Boolean! userCount: Int createdAt: Date! updatedAt: Date! } type Group { id: Int! name: String! isSystem: Boolean! permissions: [String]! pageRules: [PageRule] users: [UserMinimal] createdAt: Date! updatedAt: Date! } type PageRule { id: String! deny: Boolean! match: PageRuleMatch! roles: [PageRuleRole]! path: String! locales: [String]! } input PageRuleInput { id: String! deny: Boolean! match: PageRuleMatch! roles: [PageRuleRole]! path: String! locales: [String]! } enum PageRuleRole { READ WRITE MANAGE DELETE AS_READ AS_WRITE AS_MANAGE CM_READ CM_WRITE CM_MANAGE } enum PageRuleMatch { START EXACT END REGEX }