QM
query: Query
mutation: Mutation
}
 
"""
Custom error type interface
"""
message: String!
code: String!
}
 
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
}
 
"""
Identity
"""
id: ID!
name: String!
isAccessible: Boolean!
}
 
"""
Reprezentace MyIdentity
"""
id: ID!
name: String!
isAccessible: Boolean!
systemAdmin: Boolean!
accessibleInstitutes: [InstituteAccess!]!
}
 
"""
Reprezentace payloadu
"""
success: Boolean!
}
 
"""
ApiToken
"""
id: ID!
isAccessible: Boolean!
name: String!
}
 
"""
Describes user's access to application
"""
id: ID!
name: String!
modules: [ModuleAccess!]!
}
 
"""
approve voucher redeem
"""
success: Boolean!
}
 
type AudioFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
duration: Int!
}
 
"""
Member board booking hours
"""
}
 
"""
Member board opening hour
"""
startTime: LocalTime!
endTime: LocalTimeEnd!
}
 
"""
Reprezentace kandidata
"""
id: ID!
email: EmailAddress!
firstName: String!
lastName: String!
countryCode: String!
examSessions: [ExamSessionView!]!
}
 
"""
wrong email amount
"""
message: String!
code: String!
}
 
"""
Reprezentace výběru z kandidátů
"""
items(
sort: CandidateSort! = CREATED
sortDirection: SortDirection! = DESC
limit: Int! = 10 @intConstraint(min: 1, max: 100)
offset: Int! = 0 @intConstraint(min: 0)
): [Candidate!]!
count: Int!
}
 
"""
Reprezentace kandidata
"""
id: ID!
email: EmailAddress!
firstName: String!
lastName: String!
countryCode: String!
isAccessible: Boolean!
}
 
"""
Voucher generation is locked
"""
message: String!
code: String!
}
 
"""
Reprezentace payloadu createVoucherTemplatePayload
"""
result: VoucherTemplate!
}
 
"""
decline voucher redeem
"""
success: Boolean!
}
 
"""
Reprezentace institutu
"""
success: Boolean!
}
 
"""
Smazání voucheru
"""
success: Boolean!
}
 
"""
Smazání voucher templaty
"""
success: Boolean!
}
 
type DocumentFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
}
 
"""
wrong exam center
"""
message: String!
code: String!
}
 
"""
ExamCenter
"""
id: ID!
name: String!
contactEmail: EmailAddress
instituteId: ID!
memberBoardId: ID!
isAccessible: Boolean!
}
 
"""
Reprezxentace ExamSession
"""
token: ID!
exam: ExamView!
candidateId: ID!
passed: Boolean
earnedPercentage: Float
requiredPercentage: Int!
earnedPoints: Int
maxPoints: Int
evaluatedAt: DateTimeMs
approvedAt: DateTimeMs
isAccessible: Boolean!
}
 
"""
Reprezentace voucher template
"""
examTemplate: TemplateView!
languages: [Language!]!
}
 
"""
Reprezentace examu
"""
id: ID!
template: TemplateView!
templateVersionId: ID!
startTime: DateTimeMs
endTime: DateTimeMs
secondaryCamera: Boolean
withTimeBonus: Boolean!
isAccessible: Boolean!
}
 
"""
Exceed max voucher amount
"""
message: String!
code: String!
}
 
"""
extend voucheru
"""
success: Boolean!
}
 
"""
Reprezentace url pro upload souboru
"""
url: String!
}
 
"""
Reprezentace payloadu generace voucheru
"""
voucherBulk: VoucherBulk!
}
 
type ImageFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
width: Int!
height: Int!
}
 
"""
Reprezentace importu kandidata
"""
count: Int!
skippedCount: Int!
}
 
"""
Incorrect input when setting expire at.
"""
message: String!
code: String!
}
 
"""
Describes user's access to institute
"""
id: ID!
name: String!
accessibleApps: [AppAccess!]!
isRootUser: Boolean!
}
 
"""
Describes user's data scope within an institute
"""
memberBoardIds: [String!]
examCenterIds: [String!]
}
 
"""
Institute
"""
id: ID!
name: String!
logoFileUrl: Url
isAccessible: Boolean!
}
 
message: String!
code: String!
}
 
"""
Invalid country code provided exception.
"""
message: String!
code: String!
}
 
"""
Invalid CSV file provided exception.
"""
message: String!
code: String!
}
 
message: String!
code: String!
}
 
"""
Invalid member board values.
"""
message: String!
code: String!
}
 
"""
Invalid languages
"""
message: String!
code: String!
}
 
"""
Invalid time interval
"""
message: String!
code: String!
}
 
"""
Invalid voucher
"""
message: String!
code: String!
}
 
"""
Invalid voucher part alphabet
"""
message: String!
code: String!
}
 
"""
Invalid voucher template.
"""
message: String!
code: String!
}
 
"""
Member board not found
"""
message: String!
code: String!
}
 
"""
Member board voucher part type
"""
memberBoard: MemberBoardView!
voucherPart: String
bookingParticipantsLimit: Int
bookingAvailabilityHours: BookingAvailabilityHours!
}
 
"""
Member Board
"""
id: ID!
name: String!
contactEmail: EmailAddress
instituteId: ID!
logoFileUrl: Url
isAccessible: Boolean!
}
 
"""
Member board voucher part exists
"""
message: String!
code: String!
duplicatedCode: String!
}
 
"""
Describes user's access to module
"""
id: ID!
name: String!
permissions: [String!]!
}
 
"""
Root type pro mutation operaci
"""
importCandidatesCsv(
): ImportCandidatesCsvResult! @auth(module: DEFAULT, permission: IMPORT_CANDIDATE)
importCandidatesRaw(
): ImportCandidatesRawResult! @auth(module: DEFAULT, permission: IMPORT_CANDIDATE)
deleteCandidate(
id: ID! @resource(type: CANDIDATE)
): DeleteCandidateResult! @auth(module: DEFAULT, permission: DELETE_CANDIDATE)
updateCandidate(
id: ID! @resource(type: CANDIDATE)
): UpdateCandidatePayload! @auth(module: DEFAULT, permission: UPDATE_CANDIDATE)
updateTenantSettings(
setMemberBoardsSettings(
): SetMemberBoardsSettingsResult! @auth(module: DEFAULT)
deleteVoucherTemplate(
id: ID! @resource(type: VOUCHER_TEMPLATE)
): DeleteVoucherTemplateResult! @auth(module: VOUCHER, permission: VOUCHER_TEMPLATE_DELETE)
updateVoucherTemplate(
id: ID! @resource(type: VOUCHER_TEMPLATE)
): UpdateVoucherTemplateResult! @auth(module: VOUCHER, permission: VOUCHER_TEMPLATE_UPDATE)
createVoucherTemplate(
): CreateVoucherTemplateResult! @auth(module: VOUCHER, permission: VOUCHER_TEMPLATE_CREATE)
generateVouchers(
): GenerateVouchersResult! @auth(module: VOUCHER, permission: VOUCHER_GENERATE)
deleteVoucher(
id: ID! @resource(type: VOUCHER)
): DeleteVoucherResult! @auth(module: VOUCHER, permission: VOUCHER_DELETE)
extendVouchers(
): ExtendVouchersResult! @auth(module: VOUCHER, permission: VOUCHER_EXTEND)
approveVoucherRedeemRequest(
id: ID! @resource(type: VOUCHER_REDEEM_REQUEST)
): ApproveVoucherRedeemResult! @auth(module: VOUCHER, permission: VOUCHER_REDEEM_REQUEST_APPROVE)
declineVoucherRedeemRequest(
id: ID! @resource(type: VOUCHER_REDEEM_REQUEST)
): DeclineVoucherRedeemResult! @auth(module: VOUCHER, permission: VOUCHER_REDEEM_REQUEST_APPROVE)
validateFile(
addFilesToVoucherRedeemRequest(
): AddFilesToVoucherRedeemRequestResult! @auth(module: VOUCHER, permission: UPLOAD_FILES)
}
 
"""
Authenticated api token
"""
id: ID!
isAccessible: Boolean!
systemAdmin: Boolean!
accessibleInstitutes: [InstituteAccess!]!
name: String!
}
 
"""
Authenticated user
"""
id: ID!
isAccessible: Boolean!
systemAdmin: Boolean!
accessibleInstitutes: [InstituteAccess!]!
name: String!
firstName: String!
lastName: String!
email: EmailAddress!
language: Language!
}
 
type PdfFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
}
 
"""
Root type pro query operaci
"""
"Auth"
 
"Candidate crud"
candidate(
id: ID! @resource(type: CANDIDATE)
): Candidate! @auth(module: DEFAULT)
 
candidates(
filter: CandidateFilter! = {name:null}
): CandidateSelection! @auth(module: DEFAULT)
 
"Tenant settings"
tenantSettings: TenantSettings! @root
 
memberBoardsSettings: [MemberBoardSettings!]! @auth(module: DEFAULT)
voucherTemplate(
id: ID! @resource(type: VOUCHER_TEMPLATE)
): VoucherTemplate! @auth(module: VOUCHER)
voucherTemplates(
filter: VoucherTemplateFilter! = {name:null}
): VoucherTemplateSelection! @auth(module: VOUCHER)
voucherBulk(
id: ID! @resource(type: VOUCHER_BULK)
): VoucherBulk! @auth(module: VOUCHER)
voucherBulks(
filter: VoucherBulkFilter! = {voucherTemplateId:null,memberBoardId:null}
): VoucherBulkSelection! @auth(module: VOUCHER)
voucher(
id: ID! @resource(type: VOUCHER)
): Voucher! @auth(module: VOUCHER)
vouchers(
filter: VoucherFilter! = {code:null,voucherTemplateId:null,memberBoardId:null,voucherBulkId:null,examCenterId:null}
): VoucherSelection! @auth(module: VOUCHER)
voucherRedeemRequest(
id: ID! @resource(type: VOUCHER_REDEEM_REQUEST)
): VoucherRedeemRequest! @auth(module: VOUCHER)
voucherRedeemRequests(
filter: VoucherRedeemRequestFilter! = {code:null,status:null,active:null}
): VoucherRedeemRequestSelection! @auth(module: VOUCHER)
examTemplates: [TemplateView!]! @auth(module: DEFAULT)
fileUploadUrl(
}
 
"""
VoucherRedeemRequest processed.
"""
message: String!
code: String!
}
 
"""
Reprezentace nastavení voucher partu pro member board
"""
success: Boolean!
}
 
"""
Reprezentace templatu
"""
id: ID!
templateVersionId: ID!
name: String!
logoUrl: Url
durationInMinutes: Int!
durationInMinutesWithTimeBonus: Int!
requiredPercentage: Int!
availableLanguages: [Language!]!
isAccessible: Boolean!
requireDocuments: Boolean!
}
 
"""
Reprezentace nastaveni tenanta
"""
soapUsername: String!
soapPassword: String!
voucherPart: String!
}
 
message: String!
code: String!
}
 
message: String!
code: String!
}
 
"""
Reprezentace payloadu updateCandidate
"""
result: Candidate!
}
 
"""
Reprezentace payloadu updateTenantSettings
"""
result: TenantSettings!
}
 
"""
Reprezentace payloadu updateVoucherTemplatePayload
"""
result: VoucherTemplate!
}
 
type UrlFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
}
 
"""
User
"""
id: ID!
isAccessible: Boolean!
name: String!
firstName: String!
lastName: String!
email: EmailAddress!
}
 
"""
Reprezentace file
"""
result: File!
}
 
type VideoFile implements File {
id: ID!
type: FileType!
name: String!
bucket: String!
url: Url!
size: Int!
width: Int!
height: Int!
duration: Int!
}
 
"""
Reprezentace voucheru
"""
id: ID!
code: String!
voucherTemplate: VoucherTemplate!
memberBoard: MemberBoardView!
examTemplates: [ExamTemplateWithLanguages!]!
examCenter: ExamCenterView
candidateEmail: String
remainingBookingCount: Int!
expiresAt: DateTimeMs!
redeemedAt: DateTimeMs
}
 
"""
Reprezentace voucheru
"""
id: ID!
targetAmount: Int!
generatedAmount: Int
generatedAt: DateTimeMs
voucherTemplate: VoucherTemplate!
memberBoard: MemberBoardView!
examCenter: ExamCenterView
createdAt: DateTimeMs!
candidateEmails: [EmailAddress!]
candidateEmailsFailed: [EmailAddress!]
}
 
"""
Reprezentace výběru z voucheru
"""
items(
sort: VoucherBulkSort! = CREATED
sortDirection: SortDirection! = DESC
limit: Int! = 10 @intConstraint(min: 1, max: 100)
offset: Int! = 0 @intConstraint(min: 0)
): [VoucherBulk!]!
count: Int!
}
 
"""
Reprezentace voucheru redeem requestu
"""
id: ID!
candidate: Candidate!
language: Language!
withTimeBonus: Boolean!
secondaryCamera: Boolean!
startTime: DateTimeMs!
examTemplate: TemplateView!
voucher: Voucher!
resolvedBy: IdentityView
resolvedAt: DateTimeMs
rebookedAt: DateTimeMs
comment: String
}
 
"""
Reprezentace file
"""
file: File!
}
 
"""
Reprezentace výběru z voucher redeem requestu
"""
items(
sort: VoucherRedeemRequestSort! = CREATED
sortDirection: SortDirection! = DESC
limit: Int! = 10 @intConstraint(min: 1, max: 100)
offset: Int! = 0 @intConstraint(min: 0)
count: Int!
}
 
"""
Reprezentace výběru z voucheru
"""
items(
sort: VoucherSort! = CREATED
sortDirection: SortDirection! = DESC
limit: Int! = 10 @intConstraint(min: 1, max: 100)
offset: Int! = 0 @intConstraint(min: 0)
): [Voucher!]!
count: Int!
}
 
"""
Reprezentace voucher template
"""
id: ID!
name: String!
pattern: String!
voucherExpirationDays: Int!
examTemplates: [ExamTemplateWithLanguages!]!
activeVoucherCount: Int!
maxRebookingCount: Int!
minRebookingAdvanceHours: Int!
minBookingBufferHours: Int!
}
 
"""
Voucher template has vouchers.
"""
message: String!
code: String!
}
 
"""
Voucher template pattern unique.
"""
message: String!
code: String!
}
 
"""
Reprezentace výběru z voucher templatu
"""
items(
sort: VoucherTemplateSort! = CREATED
sortDirection: SortDirection! = DESC
limit: Int! = 10 @intConstraint(min: 1, max: 100)
offset: Int! = 0 @intConstraint(min: 0)
count: Int!
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
"""
Input add list of files to voucher redeem request
"""
voucherRedeemRequestId: ID! @resource(type: VOUCHER_REDEEM_REQUEST)
files: [ID!]! @listConstraint(minItems: 1, unique: true) @resource(type: FILE)
}
 
"""
Input pro nastaveni opening hours pro MB
"""
}
 
"""
Input pro nastaveni opening hours pro MB
"""
startTime: LocalTime!
endTime: LocalTimeEnd!
}
 
"""
Input pro přidání Institute
"""
name: String = null @stringConstraint(minLength: 1)
}
 
"""
Input pro pridani kandidata
"""
email: EmailAddress!
countryCode: String! @stringConstraint(minLength: 1, maxLength: 3)
firstName: String! @stringConstraint(minLength: 1, maxLength: 200)
lastName: String! @stringConstraint(minLength: 1, maxLength: 200)
}
 
"""
Input pro create VoucherTemplate
"""
name: String! @stringConstraint(maxLength: 255)
pattern: String! @stringConstraint(maxLength: 100)
voucherExpirationDays: Int! @intConstraint(min: 1)
maxRebookingCount: Int! @intConstraint(min: 0)
minRebookingAdvanceHours: Int! @intConstraint(min: 1)
minBookingBufferHours: Int! = 1 @intConstraint(min: 1)
}
 
"""
Input na decline requestu
"""
comment: String = null
}
 
"""
Input na extend voucheru
"""
voucherIds: [ID!]! @resource(type: VOUCHER)
days: Int @optional @intConstraint(min: 1)
}
 
"""
File generate url input
"""
bucket: Bucket!
}
 
"""
GenerateVoucherSendingStrategyInput
"""
toExamCenter: SendToExamCenterInput
toCandidates: SendToCandidatesInput
}
 
"""
Input pro generovani voucheru
"""
voucherTemplateId: ID! @resource(type: VOUCHER_TEMPLATE)
memberBoardId: ID! @resource(type: MEMBER_BOARD)
count: Int! @intConstraint(min: 1, max: 400)
sendingStrategy: GenerateVoucherSendingStrategyInput = null
}
 
"""
Input pro csv import candidates
"""
file: Upload!
}
 
"""
Input pro raw import candidates
"""
candidates: [CandidateInput!]!
}
 
minItems: Int = null @intConstraint(min: 0)
maxItems: Int = null @intConstraint(min: 0)
unique: Boolean! = false
innerList: ListConstraintInput = null
}
 
"""
Input set voucher_part for member board
"""
memberBoardId: ID! @resource(type: MEMBER_BOARD)
voucherPart: String! @stringConstraint(minLength: 4, maxLength: 4)
bookingParticipantsLimit: Int = null
bookingAvailabilityHours: BookingAvailabilityHoursInput!
}
 
count: Int! @intConstraint(min: 1)
from: [String!]! @listConstraint(minItems: 1)
}
 
"""
SendToCandidatesInput
"""
candidateEmails: [EmailAddress!]! @listConstraint(minItems: 1, unique: true)
examCenterId: ID = null @resource(type: EXAM_CENTER)
}
 
"""
SendToExamCenterInput
"""
examCenterId: ID! @resource(type: EXAM_CENTER)
}
 
"""
Input set list of memberBoards with voucher parts
"""
memberBoardsSettings: [MemberBoardSettingsInput!]!
}
 
"""
Input pro TenantSettings
"""
soapUsername: String @optional @stringConstraint(minLength: 4, maxLength: 200)
soapPassword: String @optional @stringConstraint(minLength: 4, maxLength: 200)
voucherPart: String @optional @stringConstraint(minLength: 4, maxLength: 4)
}
 
"""
Input pro pridani kandidata
"""
countryCode: String @optional @stringConstraint(minLength: 1, maxLength: 3)
firstName: String @optional @stringConstraint(minLength: 1, maxLength: 200)
lastName: String @optional @stringConstraint(minLength: 1, maxLength: 200)
}
 
"""
Input pro VoucherTemplate
"""
name: String @optional @stringConstraint(maxLength: 255)
pattern: String @optional @stringConstraint(maxLength: 100)
voucherExpirationDays: Int @optional @intConstraint(min: 1)
maxRebookingCount: Int @optional @intConstraint(min: 0)
minRebookingAdvanceHours: Int @optional @intConstraint(min: 1)
minBookingBufferHours: Int @optional @intConstraint(min: 1)
}
 
"""
File upload validation input
"""
fileUrl: Url!
name: String! @stringConstraint(minLength: 1, maxLength: 200)
}
 
"""
Input pro filtraci voucher bulk
"""
voucherTemplateId: ID = null @resource(type: VOUCHER_TEMPLATE)
memberBoardId: ID = null @resource(type: MEMBER_BOARD)
}
 
"""
Input pro filtraci voucheru
"""
code: String = null
voucherTemplateId: ID = null @resource(type: VOUCHER_TEMPLATE)
memberBoardId: ID = null @resource(type: MEMBER_BOARD)
voucherBulkId: ID = null @resource(type: VOUCHER_BULK)
examCenterId: ID = null @resource(type: EXAM_CENTER)
}
 
"""
Input pro filtraci voucher template
"""
code: String = null @stringConstraint(minLength: 4)
status: VoucherRedeemRequestStatus = null
active: Boolean = null
}
 
"""
Input pro prirazeni jazyku k ExamTemplate pro VoucherTemplate
"""
examTemplateId: ID! @resource(type: EXAM_TEMPLATE)
languages: [Language!] = null @listConstraint(unique: true)
}
 
"""
Input pro filtraci voucher template
"""
name: String = null @stringConstraint(minLength: 1)
}
 
"""
Date type - string which contains valid date in "<YYYY>-<MM>-<DD>" format.
"""
scalar Date @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6")
 
"""
DateTimeMs type - string which contains valid date in ISO8601 format.
"""
scalar DateTimeMs @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6")
 
"""
EmailAddress type - string which contains valid email address.
"""
scalar EmailAddress @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc5322#section-3.4.1")
 
"""
Json type - string which contains valid JSON.
"""
scalar Json @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc7159")
 
"""
LocalTime type - string which contains time in "HH:MM:SS" format (without timezone information).
"""
 
"""
LocalTimeEnd type - string which contains time in "HH:MM:SS" format (without timezone information), including a special 24:00:00 value for usage in intervals.
"""
 
"""
Upload type - represents file which was send to server.
By GraphQL viewpoint it is scalar type, but it must be used as input only.;
"""
scalar Upload @specifiedBy(url: "https://github.com/jaydenseric/graphql-multipart-request-spec")
 
"""
Url type - string which contains valid URL (Uniform Resource Locator).
"""
scalar Url @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc3986")
 
"""
Aws buckets supported by this application
"""
candidate
}
 
"""
Možnosti řazení kandidátů
"""
CREATED
NAME
}
 
"""
Type of file
"""
IMAGE
AUDIO
VIDEO
PDF
URL
DOCUMENT
}
 
"""
Supported languages
"""
EN
DE
ES
FR
IT
PL
}
 
"""
Modules supported by this application
"""
DEFAULT
VOUCHER
}
 
"""
Permissions supported by this application
"""
DELETE_CANDIDATE
IMPORT_CANDIDATE
UPDATE_CANDIDATE
UPLOAD_FILES
VOUCHER_TEMPLATE_CREATE
VOUCHER_TEMPLATE_UPDATE
VOUCHER_TEMPLATE_DELETE
VOUCHER_GENERATE
VOUCHER_DELETE
VOUCHER_EXTEND
VOUCHER_REDEEM_REQUEST_APPROVE
}
 
"""
Typ entity
"""
CANDIDATE
VOUCHER_TEMPLATE
VOUCHER_BULK
VOUCHER
VOUCHER_REDEEM_REQUEST
FILE
IDENTITY
USER
MEMBER_BOARD
EXAM_CENTER
EXAM_TEMPLATE
EXAM_SESSION
}
 
"""
Sorting direction
"""
ASC
DESC
}
 
"""
Možnosti řazení voucheru
"""
CREATED
}
 
"""
Voucher bulk status
"""
PROCESSING
SUCCESS
ERROR
}
 
"""
Možnosti řazení voucher redeem requestu
"""
CREATED
}
 
"""
Voucher redeem request status
"""
PENDING
APPROVED
DECLINED
}
 
"""
Možnosti řazení voucheru
"""
CREATED
EXPIRES_AT
}
 
"""
Možnosti řazení voucher template
"""
CREATED
NAME
}
 
"""
Only system admin can perform this action.
"""
directive @admin on FIELD_DEFINITION
 
"""
Only user with given permission can perform this action.
"""
module: Module!
permission: Permission
) on FIELD_DEFINITION
 
"""
Only user with given permission can perform this action.
"""
module: Module!
permission: Permission
) repeatable on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
 
"""
Graphpinator floatConstraint directive.
"""
min: Float
max: Float
oneOf: [Float!] @listConstraint(minItems: 1)
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | VARIABLE_DEFINITION
 
"""
Graphpinator intConstraint directive.
"""
min: Int
max: Int
oneOf: [Int!] @listConstraint(minItems: 1)
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | VARIABLE_DEFINITION
 
"""
Graphpinator listConstraint directive.
"""
minItems: Int = null @intConstraint(min: 0)
maxItems: Int = null @intConstraint(min: 0)
unique: Boolean! = false
innerList: ListConstraintInput = null
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | VARIABLE_DEFINITION
 
"""
Only logged in user can perform this action.
"""
directive @loggedIn on FIELD_DEFINITION
 
"""
Graphpinator objectConstraint directive.
"""
atLeastOne: [String!] @listConstraint(minItems: 1)
atMostOne: [String!] @listConstraint(minItems: 1)
exactlyOne: [String!] @listConstraint(minItems: 1)
) repeatable on OBJECT | INTERFACE | INPUT_OBJECT
 
"""
Input value for this argument can be either omitted or have non-null value.
"""
directive @optional on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
 
type: ResourceType!
) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
 
"""
Only root user can perform this action.
"""
directive @root on FIELD_DEFINITION
 
"""
Graphpinator stringConstraint directive.
"""
minLength: Int @intConstraint(min: 0)
maxLength: Int @intConstraint(min: 0)
regex: String
oneOf: [String!] @listConstraint(minItems: 1)
) on FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | VARIABLE_DEFINITION