170 lines
4.1 KiB
GraphQL
170 lines
4.1 KiB
GraphQL
type Profile implements Node {
|
|
id: ID!
|
|
fullName: String!
|
|
emailAddress: EmailAddr!
|
|
source: String!
|
|
state: ProfileState!
|
|
additionalEmailAddresses: [EmailAddr!]!
|
|
kind: String
|
|
position: String
|
|
contractStartDate: Datetime
|
|
contractEndDate: Datetime
|
|
createdAt: Datetime!
|
|
updatedAt: Datetime!
|
|
|
|
identity: Identity @goField(forceResolver: true)
|
|
organization: Organization @goField(forceResolver: true)
|
|
membership: Membership @goField(forceResolver: true)
|
|
pendingInvitations(
|
|
first: Int
|
|
after: CursorKey
|
|
last: Int
|
|
before: CursorKey
|
|
orderBy: InvitationOrder
|
|
): InvitationConnection @goField(forceResolver: true)
|
|
|
|
permission(action: String!): Boolean!
|
|
@goField(forceResolver: true)
|
|
@authentication(required: PRESENT)
|
|
}
|
|
|
|
enum ProfileState
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ProfileState") {
|
|
ACTIVE @goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateActive")
|
|
INACTIVE
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileStateInactive")
|
|
}
|
|
|
|
enum ProfileSource
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.ProfileSource") {
|
|
MANUAL
|
|
@goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileSourceManual")
|
|
SAML @goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileSourceSAML")
|
|
SCIM @goEnum(value: "go.probo.inc/probo/pkg/coredata.ProfileSourceSCIM")
|
|
}
|
|
|
|
enum ProfileOrderField
|
|
@goModel(model: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderField") {
|
|
FULL_NAME
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldFullName"
|
|
)
|
|
CREATED_AT
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldCreatedAt"
|
|
)
|
|
EMAIL_ADDRESS
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldEmailAddress"
|
|
)
|
|
KIND @goEnum(value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldKind")
|
|
ORGANIZATION_NAME
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldOrganizationName"
|
|
)
|
|
STATE
|
|
@goEnum(
|
|
value: "go.probo.inc/probo/pkg/coredata.MembershipProfileOrderFieldState"
|
|
)
|
|
}
|
|
|
|
input ProfileFilter {
|
|
contractEnded: Boolean
|
|
state: ProfileState
|
|
}
|
|
|
|
input ProfileOrder
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/connect/v1/types.ProfileOrderBy"
|
|
) {
|
|
direction: OrderDirection!
|
|
field: ProfileOrderField!
|
|
}
|
|
|
|
type ProfileConnection
|
|
@goModel(
|
|
model: "go.probo.inc/probo/pkg/server/api/connect/v1/types.ProfileConnection"
|
|
) {
|
|
totalCount: Int @goField(forceResolver: true)
|
|
edges: [ProfileEdge!]!
|
|
pageInfo: PageInfo!
|
|
}
|
|
|
|
type ProfileEdge {
|
|
cursor: CursorKey!
|
|
node: Profile!
|
|
}
|
|
|
|
extend type Mutation {
|
|
createUser(input: CreateUserInput!): CreateUserPayload
|
|
@authentication(required: PRESENT)
|
|
deactivateUser(input: DeactivateUserInput!): DeactivateUserPayload
|
|
updateUser(input: UpdateUserInput!): UpdateUserPayload!
|
|
archiveUser(input: ArchiveUserInput!): ArchiveUserPayload
|
|
@authentication(required: PRESENT)
|
|
removeUser(input: RemoveUserInput!): RemoveUserPayload
|
|
@authentication(required: PRESENT)
|
|
}
|
|
|
|
input CreateUserInput {
|
|
organizationId: ID!
|
|
fullName: String!
|
|
emailAddress: EmailAddr!
|
|
role: MembershipRole!
|
|
additionalEmailAddresses: [EmailAddr!]
|
|
kind: String
|
|
position: String
|
|
contractStartDate: Datetime @goField(omittable: true)
|
|
contractEndDate: Datetime @goField(omittable: true)
|
|
}
|
|
|
|
input ActivateUserInput {
|
|
organizationId: ID!
|
|
profileId: ID!
|
|
}
|
|
|
|
input DeactivateUserInput {
|
|
organizationId: ID!
|
|
profileId: ID!
|
|
}
|
|
|
|
input UpdateUserInput {
|
|
id: ID!
|
|
fullName: String!
|
|
additionalEmailAddresses: [EmailAddr!]
|
|
kind: String
|
|
position: String
|
|
contractStartDate: Datetime @goField(omittable: true)
|
|
contractEndDate: Datetime @goField(omittable: true)
|
|
}
|
|
|
|
input RemoveUserInput {
|
|
organizationId: ID!
|
|
profileId: ID!
|
|
}
|
|
|
|
input ArchiveUserInput {
|
|
organizationId: ID!
|
|
profileId: ID!
|
|
}
|
|
|
|
type CreateUserPayload {
|
|
profileEdge: ProfileEdge!
|
|
}
|
|
|
|
type DeactivateUserPayload {
|
|
success: Boolean!
|
|
}
|
|
|
|
type UpdateUserPayload {
|
|
profile: Profile!
|
|
}
|
|
|
|
type RemoveUserPayload {
|
|
deletedProfileId: ID!
|
|
}
|
|
|
|
type ArchiveUserPayload {
|
|
archivedProfileId: ID!
|
|
}
|