2023-07-10 08:42:51 +00:00
|
|
|
type AttributeValue {
|
|
|
|
name: String!
|
|
|
|
value: [String!]!
|
2024-01-21 22:16:21 +00:00
|
|
|
schema: AttributeSchema!
|
2023-07-10 08:42:51 +00:00
|
|
|
}
|
|
|
|
|
2021-08-30 07:28:27 +00:00
|
|
|
type Mutation {
|
2021-09-01 08:00:51 +00:00
|
|
|
createUser(user: CreateUserInput!): User!
|
2021-10-11 16:45:25 +00:00
|
|
|
createGroup(name: String!): Group!
|
2023-10-22 11:07:47 +00:00
|
|
|
createGroupWithDetails(request: CreateGroupInput!): Group!
|
2021-09-01 08:00:51 +00:00
|
|
|
updateUser(user: UpdateUserInput!): Success!
|
2021-09-24 15:50:29 +00:00
|
|
|
updateGroup(group: UpdateGroupInput!): Success!
|
2021-09-15 07:45:17 +00:00
|
|
|
addUserToGroup(userId: String!, groupId: Int!): Success!
|
|
|
|
removeUserFromGroup(userId: String!, groupId: Int!): Success!
|
2021-09-24 07:14:18 +00:00
|
|
|
deleteUser(userId: String!): Success!
|
2021-09-24 15:35:46 +00:00
|
|
|
deleteGroup(groupId: Int!): Success!
|
2023-10-03 23:39:08 +00:00
|
|
|
addUserAttribute(name: String!, attributeType: AttributeType!, isList: Boolean!, isVisible: Boolean!, isEditable: Boolean!): Success!
|
|
|
|
addGroupAttribute(name: String!, attributeType: AttributeType!, isList: Boolean!, isVisible: Boolean!, isEditable: Boolean!): Success!
|
|
|
|
deleteUserAttribute(name: String!): Success!
|
|
|
|
deleteGroupAttribute(name: String!): Success!
|
2021-08-30 07:28:27 +00:00
|
|
|
}
|
|
|
|
|
2021-08-26 19:46:00 +00:00
|
|
|
type Group {
|
2021-09-16 07:26:31 +00:00
|
|
|
id: Int!
|
|
|
|
displayName: String!
|
2022-07-21 10:10:37 +00:00
|
|
|
creationDate: DateTimeUtc!
|
|
|
|
uuid: String!
|
2023-09-13 22:52:46 +00:00
|
|
|
"User-defined attributes."
|
|
|
|
attributes: [AttributeValue!]!
|
2021-08-26 19:46:00 +00:00
|
|
|
"The groups to which this user belongs."
|
|
|
|
users: [User!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
"""
|
|
|
|
A filter for requests, specifying a boolean expression based on field constraints. Only one of
|
|
|
|
the fields can be set at a time.
|
|
|
|
"""
|
|
|
|
input RequestFilter {
|
|
|
|
any: [RequestFilter!]
|
|
|
|
all: [RequestFilter!]
|
|
|
|
not: RequestFilter
|
|
|
|
eq: EqualityConstraint
|
2021-09-24 20:35:31 +00:00
|
|
|
memberOf: String
|
|
|
|
memberOfId: Int
|
2021-08-26 19:46:00 +00:00
|
|
|
}
|
|
|
|
|
2021-08-30 06:48:06 +00:00
|
|
|
"DateTime"
|
|
|
|
scalar DateTimeUtc
|
|
|
|
|
2021-09-16 07:26:31 +00:00
|
|
|
type Query {
|
|
|
|
apiVersion: String!
|
|
|
|
user(userId: String!): User!
|
|
|
|
users(filters: RequestFilter): [User!]!
|
|
|
|
groups: [Group!]!
|
2021-10-11 15:03:50 +00:00
|
|
|
group(groupId: Int!): Group!
|
2023-07-04 15:29:06 +00:00
|
|
|
schema: Schema!
|
2021-09-16 07:26:31 +00:00
|
|
|
}
|
|
|
|
|
2021-08-30 07:28:27 +00:00
|
|
|
"The details required to create a user."
|
2021-09-01 08:00:51 +00:00
|
|
|
input CreateUserInput {
|
2021-08-30 07:28:27 +00:00
|
|
|
id: String!
|
|
|
|
email: String!
|
|
|
|
displayName: String
|
|
|
|
firstName: String
|
|
|
|
lastName: String
|
2023-10-22 11:07:47 +00:00
|
|
|
"Base64 encoded JpegPhoto." avatar: String
|
|
|
|
"User-defined attributes." attributes: [AttributeValueInput!]
|
2021-08-30 07:28:27 +00:00
|
|
|
}
|
|
|
|
|
2023-10-03 23:39:08 +00:00
|
|
|
type AttributeSchema {
|
|
|
|
name: String!
|
|
|
|
attributeType: AttributeType!
|
|
|
|
isList: Boolean!
|
|
|
|
isVisible: Boolean!
|
|
|
|
isEditable: Boolean!
|
|
|
|
isHardcoded: Boolean!
|
|
|
|
}
|
|
|
|
|
|
|
|
"The fields that can be updated for a user."
|
|
|
|
input UpdateUserInput {
|
|
|
|
id: String!
|
|
|
|
email: String
|
|
|
|
displayName: String
|
|
|
|
firstName: String
|
|
|
|
lastName: String
|
2023-10-22 11:07:47 +00:00
|
|
|
"Base64 encoded JpegPhoto." avatar: String
|
|
|
|
"""
|
|
|
|
Attribute names to remove.
|
|
|
|
They are processed before insertions.
|
|
|
|
""" removeAttributes: [String!]
|
|
|
|
"""
|
|
|
|
Inserts or updates the given attributes.
|
|
|
|
For lists, the entire list must be provided.
|
|
|
|
""" insertAttributes: [AttributeValueInput!]
|
2023-10-03 23:39:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
input EqualityConstraint {
|
|
|
|
field: String!
|
|
|
|
value: String!
|
|
|
|
}
|
|
|
|
|
|
|
|
type Schema {
|
|
|
|
userSchema: AttributeList!
|
|
|
|
groupSchema: AttributeList!
|
|
|
|
}
|
|
|
|
|
|
|
|
"The fields that can be updated for a group."
|
|
|
|
input UpdateGroupInput {
|
2023-10-22 11:07:47 +00:00
|
|
|
"The group ID." id: Int!
|
|
|
|
"The new display name." displayName: String
|
|
|
|
"""
|
|
|
|
Attribute names to remove.
|
|
|
|
They are processed before insertions.
|
|
|
|
""" removeAttributes: [String!]
|
|
|
|
"""
|
|
|
|
Inserts or updates the given attributes.
|
|
|
|
For lists, the entire list must be provided.
|
|
|
|
""" insertAttributes: [AttributeValueInput!]
|
|
|
|
}
|
|
|
|
|
|
|
|
input AttributeValueInput {
|
|
|
|
"""
|
|
|
|
The name of the attribute. It must be present in the schema, and the type informs how
|
|
|
|
to interpret the values.
|
|
|
|
""" name: String!
|
|
|
|
"""
|
|
|
|
The values of the attribute.
|
|
|
|
If the attribute is not a list, the vector must contain exactly one element.
|
|
|
|
Integers (signed 64 bits) are represented as strings.
|
|
|
|
Dates are represented as strings in RFC3339 format, e.g. "2019-10-12T07:20:50.52Z".
|
|
|
|
JpegPhotos are represented as base64 encoded strings. They must be valid JPEGs.
|
|
|
|
""" value: [String!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
"The details required to create a group."
|
|
|
|
input CreateGroupInput {
|
|
|
|
displayName: String!
|
|
|
|
"User-defined attributes." attributes: [AttributeValueInput!]
|
2023-10-03 23:39:08 +00:00
|
|
|
}
|
|
|
|
|
2021-08-26 19:46:00 +00:00
|
|
|
type User {
|
|
|
|
id: String!
|
|
|
|
email: String!
|
2021-09-01 07:59:01 +00:00
|
|
|
displayName: String!
|
|
|
|
firstName: String!
|
|
|
|
lastName: String!
|
2022-11-21 08:13:25 +00:00
|
|
|
avatar: String
|
2021-08-30 06:48:06 +00:00
|
|
|
creationDate: DateTimeUtc!
|
2022-07-21 10:10:37 +00:00
|
|
|
uuid: String!
|
2023-09-13 22:52:46 +00:00
|
|
|
"User-defined attributes."
|
2023-07-10 08:42:51 +00:00
|
|
|
attributes: [AttributeValue!]!
|
2021-08-26 19:46:00 +00:00
|
|
|
"The groups to which this user belongs."
|
|
|
|
groups: [Group!]!
|
|
|
|
}
|
|
|
|
|
2023-10-03 23:39:08 +00:00
|
|
|
enum AttributeType {
|
|
|
|
STRING
|
|
|
|
INTEGER
|
|
|
|
JPEG_PHOTO
|
|
|
|
DATE_TIME
|
2023-07-04 15:29:06 +00:00
|
|
|
}
|
|
|
|
|
2024-01-21 22:16:21 +00:00
|
|
|
type AttributeList {
|
|
|
|
attributes: [AttributeSchema!]!
|
2024-02-05 21:20:08 +00:00
|
|
|
extraLdapObjectClasses: [String!]!
|
2024-01-21 22:16:21 +00:00
|
|
|
}
|
|
|
|
|
2021-09-01 08:00:51 +00:00
|
|
|
type Success {
|
|
|
|
ok: Boolean!
|
|
|
|
}
|
|
|
|
|
2021-08-26 19:46:00 +00:00
|
|
|
schema {
|
|
|
|
query: Query
|
2021-08-30 07:28:27 +00:00
|
|
|
mutation: Mutation
|
2021-08-26 19:46:00 +00:00
|
|
|
}
|